すべてのソースファイル(* .c、*。cpp、*。h)をリストする方法


15

Linux / MinGW / Cygwin、および再帰的にすべてのサブディレクトリに含まれるソースファイル(* .c、*。cpp、*。h)を見つけたいです。

私の基本的な考え方は、findとを使用することgrepです。ただし、指定されたファイル名をチェックできる正規表現を作成するのは、*。c、*。cpp、または* .hのいずれかです。手伝ってくれませんか?

回答:


14

これは動作するはずです:

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'


1

私は使うだろう:

find . -regex '.*\.\(c\|cpp\|h\)$' -print

1
私のMacbookでは、スクリプト-Eは何も見つかりません。-E(拡張)を追加して、移植性を高める必要がありますfind -E . -regex '.*\.(c|h|cpp)' -print。;-)
pambda

1

速くて汚い、ディレクトリ名を避けます:

find . -type f -name *.[c\|h]

2
このコマンドには3つの問題があります。1 *.cpp.ファイルが見つかりません。2. *.|ファイルを見つけます。3.現在のディレクトリに一致するファイルがある場合、グロブは拡張します。引用はそれを防ぎます。
デニス


0

私はbashでも動作するmac proを使用しています。しかし、コマンドラインに入力するたびに:

find -name

それは違法なオプションを言います。だから私はそれを次のように単純化しました:

find *.c *.cpp *.h

そして、それが本当に機能していることがわかりました!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.