UNIXの使用方法“ find”すべてのcppおよびhファイルを見つけるコマンド?

StackOverflow https://stackoverflow.com/questions/277999

  •  07-07-2019
  •  | 
  •  

質問

使用する必要があるすべての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の計算)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top