*.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
)