UNIXの使用方法“ find”すべてのcppおよびhファイルを見つけるコマンド?
質問
使用する必要があるすべてのhファイルを見つけるには、 見つける。 -name" *。h" しかし、すべてのhおよびcppファイルを見つける方法は?
解決
find . -name \*.h -print -o -name \*.cpp -print
または
find . \( -name \*.h -o -name \*.cpp \) -print
他のヒント
find -name "*.h" -or -name "*.cpp"
(書式設定として解釈されたアスタリスクを保護するために編集)
Paul Tomblin はすでに素晴らしい答えを提供しましたが、あなたがしていることのパターンを見たと思いました。
findを使用して、ある日grepで処理するファイルリストを生成する可能性があります。そのようなタスクには、はるかに使いやすいツール確認
perlをサポートするシステムで動作し、ディレクトリ内のすべてのC ++関連ファイルを再帰的に検索して、指定された文字列を検索するのは簡単です
ack "int\s+foo" --cpp
"-cpp"
はデフォルトで .cpp .cc .cxx .m .hpp .hh .h .hxx
ファイルと一致します
(デフォルトではリポジトリのディレクトリもスキップするため、たまたまそのファイルのように見えるファイルに一致しません。)
find
でそれを行う短く明確な方法は次のとおりです。
find . -regex '.*\.\(cpp\|h\)'
-regex
のmanページから:"これは検索ではなく、パス全体で一致します。"したがって、ファイル名の前のパス ./ dir1 / dir2 /...
の先頭に一致するように、。*
をプレフィックスとして付ける必要があります。
find . -regex ".*\.[cChH]\(pp\)?" -print
これはcygwinで問題なくテストされました。
次の短い形式で find
を使用できます:
find \( -name '*.cpp' -o -name '*.h' \) -print
-print
は省略できます。式の間で -o
を使用することは、複数のタイプのファイルを見つけて同じ仕事をしたい場合に特に便利です(たとえばmd5sumの計算)。