スポンサーリンク
findとgrepで拡張子で検索する
※MACターミナル(BSD系)での動作確認です。
例えば、.c ファイルを検索する場合は、下記のように書けますね。
参考:grepコマンドのor検索時には、正規表現の"|"の前にバックスラッシュ"\"が必要なので注意が必要(しばらく経つと忘れがち)
$ find . -type f | grep "\.c$"
下記のように、ディレクトリがあったとき、
$ tree . ├── dir001 │ ├── dir │ │ └── file3.c │ └── file3.txt └── dir002 ├── dir │ └── file2.cpp ├── file1c └── file3.txt 4 directories, 5 files
下記が実行結果になります。
$ find . -type f | grep "\.c$" ./dir001/dir/file3.c
スポンサーリンク
拡張子の扱いは注意が必要
注意点としては、検索条件の "." の前にバックスラッシュを入れることと、
末尾に"$"を入れることに注意です。
$ find . -type f | grep "\.c$"
"$"を入れないと、末尾が .c で検索しようとしても、.cpp も検索されてしまいます。
"$"で末尾が c で終わることを指定する必要があります。
$ find . -type f | grep "\.c" ./dir001/dir/file3.c ./dir002/dir/file2.cpp
また、"."の前にバックスラッシュを入れないと、"."は任意の1文字を表します。
下記のように、末尾がcのバイナリファイルも検索されてしまいます。
$ find . -type f | grep ".c$" ./dir001/dir/file3.c ./dir002/file1c
スポンサーリンク