回答:
-o異なるパラメーター間でフラグを使用します。
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) 魅力のように機能します。
注ブラケットとその内容の間にスペースが必要です。スペースがないと機能しません。
説明:
type -f -ファイルのみを検索(ディレクトリは検索しない)\(- type -fすべての引数に適用するために必要-o -論理OR演算子-iname-に似て-nameいますが、大文字と小文字は区別されませんtype -f拡張し、括弧なしの両方式に適用されます、だから、しないfind ./ -type f -iname \*.jpg -o -type f -iname \*.pngも動作します...それは長く:-) 2つの文字だが
a * b + c異なっているa * (b + c)
Shadurによって提案さ-oれたように基準を組み合わせることができます。-o並置よりも優先順位が低いため、括弧が必要になる場合があることに注意してください。
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
Linuxでは、-regex拡張機能をより簡潔に組み合わせるために使用できます。デフォルトの正規表現構文はEmacs(基本的な正規表現に加えて\|、代替などのいくつかの拡張機能)です。拡張正規表現に切り替えるオプションがあります。
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
FreeBSD、NetBSD、およびOSXでは、拡張正規表現-regexと組み合わせて使用できます-E。
find -E . -regex '.*\.(jpg|png)'
-inameはなく、-nameあなたはまた、キャプチャします- image.JPGとimage.PnG
これはより正確です:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregexマッチjpgなどJPG Jpg jpGなど。これ$は必要ないと思います。
find -E . -iregex '.*\.(jpg|png|gif)'ます。@ sorinの回答に示されているとおりです。
明確にするために、Linux、Unix、およびmacOSフレーバーで機能する唯一のオプションは次のとおりです。
find -E . -regex '.*\.(jpg|png)'
これは、OS Xバージョンが少し異なるためですが、ほとんどのプラットフォームでうまくいくことを書くためにそれは重要です。
-type f \( -iname \*.png -o -iname \*.jpg\)OSXでは動作しないのはどの部分ですか?
find -name複数のパターンに一致するパターン