回答:
特定の名前のファイルだけを検索する場合は、使用します find
マニュアルページは、ここから、またはman find
ターミナルプロンプトで入力して見つけることができます。
基本的に、findは指定した基準を満たすファイルを再帰的に探します。最も簡単な例:
find . -name file_name -print
これは、現在のディレクトリから「file_name」という名前のファイルを検索し、下で検索して、その名前のファイルを印刷します。
find ~ -name ".DS_Store" -delete
これにより、すべての.DS_Storeファイルが検索され、削除されます。
名前、正規表現、日付で検索できます。-exec
述語を使用して、Unixの方法でファイルを操作できます。
また、findをアクションのより複雑なパイプラインの開始として使用することもできます。例:
find . -type f -print | egrep -i '\.m4a$|\.mp3$'
拡張子が.m4aまたは.mp3のすべてのファイルを検索します
find . -type f -print | egrep -i '\.m4a$|\.mp3$' | wc -l
それらのファイルの数がわかります。
-print
が唯一の述部である場合、省略できます。また、利用可能な単純なグロビングがあります。したがって、すべての発見.txt
ディレクトリ下のファイルがfoo
で行われることになるfind foo -name \\*.txt
find .
ISをcwdから再帰的に入力します。find .
ルートディレクトリに入力してみてください!
grep
パターンとfilespecの両方が必要です。欠落している場合、パターンとして渡されたものを使用し、標準入力を介してデータが検索されるのを待ちます。
より複雑なfilespecを使用する場合は、を使用しますfind
。
find ~ -name '*.txt' -exec grep -q 'secret' {} \; -print
-exec
述語を使用する必要はありませんfind
。