使用方法または検索して実行する方法[重複]

使用方法または検索して実行する方法[重複]

*.c拡張子のあるファイルを見つけようとします*.h。私は次のコマンドを使用します

find "$path" -type f -iname "*.c" -o -iname "*.h" -exec ls {} \;

これはls*.hマッチだけを行います。私は試しましたが、-o -iname *.c -o -iname *.h同じことが起こりました。 cファイルとhファイルで実行したいですか?

答え1

分離された句をグループ化する必要があります。

find "$path" -type f \( -iname "*.c" -o -iname "*.h" \) -exec ls {} \;

これがなければ、コマンドは2つの別々の節集合、つまり一方では他方findでは解釈されます。そのため、一致する項目のみを表示できます。-type f -iname "*.c"-iname "*.h" -exec ls {} \;*.h

lsところで、こうして走るのは意味がありません。使用することもできます

find "$path" -type f \( -iname "*.c" -o -iname "*.h" \) -print

(たぶんプレースlsホルダーかもしれません)。

2つのglobを組み合わせてコマンドを簡素化することもできます。

find "$path" -type f -iname "*.[ch]"

(基本動作によって異なります-print

関連情報