*をディレクトリ内の隠しファイルと一致させる方法

*をディレクトリ内の隠しファイルと一致させる方法

特定のディレクトリの隠しファイルを一致させる方法

例えば

次のコマンドを実行すると、隠しファイルの結果は表示されません。

 du -b maybehere*/*

以下を使用するのではなく、単一のコマンドを使用してこれを達成するにはどうすればよいですか?

du -b maybehere*/.* maybehere*/*

これは2回入力する必要があるからです。

ベストアンサー1

支柱の拡張を使用する:

du -b maybehere*/{*,.[^.],.??*}

または代替的に

du -b maybehere*/{,.[^.],..?}*

これに対するロジックは明確ではない可能性があるため、説明は次のとおりです。

  • *隠されていないすべてのファイルと一致
  • .[^.]名前は単一のドットで始まり、その後にドット以外のファイル名が続くファイルと一致します。最初の形式では、2文字のファイル名のみが使用されます。
  • .??*長さが3文字以上の隠しファイルと一致します。
  • ..?*上記と同じですが、2番目の文字はドットでなければなりません。

要点は、現在のディレクトリと親ディレクトリのハードリンク(.および)を除外することです。..各ファイルが一度だけ計算されるように、すべての一般的なファイルを含めてください!

たとえば、最も簡単なものは次のとおりです。

du -b maybehere*/{.,}*

これは、リストにドット.と「なし」(,と末尾の間に何もありません})が含まれているため、すべての隠しファイル(ドットで始まる)と非表示のすべてのファイル(「なし」で始まる)が一致することを意味します。問題は、これが目的と一致しない可能性が高いため、何とか除外する必要があることです...


支柱の拡張についての最後の言葉です。

サポート拡張より少ない数の文字を作成することで、コマンドラインにより多くのファイル/文字列/何かを含めることができるメカニズムです。構文は、で始まり終わる{word1,word2,...}文字列のカンマ区切りリストです。マニュアルは非常に基本的であり、同時に非常に一般的な使用例を提供します。{}bash

$ echo a{b,c,d}e
abe ace ade

おすすめ記事