最近、特定のコマンドが隠されたフォルダをスキップする理由を確認するように求められましたが、find
問題は次のようにパスの末尾にワイルドカードがあることを発見しました。
find /path_to_folder/*
上記のコマンドの出力は隠しフォルダをスキップし、通常のファイルとフォルダのみを表示します。
しかし、私たちが望むなら
find /path_to_folder/
すべてのファイルとフォルダ(隠しファイルを含む)を持つことができます。
誰かがこの振る舞いを理解するのを手伝ってくれたり、詳細を見つけることができる場所を教えてもらえますか?マニュアルを検索してみましたが、find
明確な答えが得られませんでした。
答え1
このユーティリティは1つ以上の検索パスを使用します。これは、などの述語を使用してfind
追加のテストを指定する前に、ユーティリティの最初の引数です。-name
-type
を使用すると、find /path_to_folder/*
シェルはワイルドカードパターンを一致/path_to_folder/*
するパス名のリストに展開します。これらのそれぞれが検索されますfind
。*
デフォルトでは、パターンの末尾にある名前は隠された名前には拡張されません。ユーティリティは各検索パスに移動し、隠された名前を含むその下のすべての名前を検索します。ただし、そのパス名を指定していないため、それ自体はfind
検索しません。/path_to_folder
を使用するときは、パス名を検索パスとしてfind /path_to_folder/
指定します。find
ユーティリティは、隠し名前を含むディレクトリとそのサブディレクトリをfind
参照します。この場合、このパス名を検索パスとして指定したので、/path_to_folder
隠された名前を直接見つけます。/path_to_folder
要約:
/path_to_folder/*
シェルが一致する隠し名前ではなく、すべての名前のリストに展開されるワイルドカードパターン/path_to_folder
。以下の名前は検索パス/path_to_folder
として使用されますが、リストには含まれていません。find
/path_to_folder
/path_to_folder/
単一パス名として使用すると、find
ディレクトリが検索され、ディレクトリ内または下のすべてのエントリが検索されます。