次のコマンドを使用すると、すべてのjpg
画像を取得できます。
find . -name "*.jpg"
しかし、どのようにしてpng
ファイルも結果に追加できますか?
異なるパラメーター間で_-o
_フラグを使用します。
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
は魅力のように機能します。
[〜#〜] note [〜#〜]そこにmustブラケットとそのコンテンツの間にスペースがあるか、勝ちます動作しません。
説明:
-type f
_-ファイルのみを検索します(ディレクトリは検索しません)\(
_&_\)
_-_-type f
_がすべての引数に適用されるために必要です-o
_-論理OR演算子-iname
_-_-name
_に似ていますが、一致では大文字と小文字が区別されません基準を-o
と組み合わせて Shadurが推奨 とすることができます。 -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( 基本正規表現 に加えて、\|
の代替などのいくつかの拡張機能)です。 extended regexps に切り替えるオプションがあります。
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
FreeBSD、NetBSDおよびOSXでは、拡張正規表現に対して-regex
と-E
を組み合わせて使用できます。
find -E . -regex '.*\.(jpg|png)'
これはより正しいです:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
明確にするために、Linux、Unix、およびmacOSフレーバーで機能する唯一のオプションは次のとおりです。
find -E . -regex '.*\.(jpg|png)'
これは、OS Xのバージョンが少し異なるためですが、ほとんどのプラットフォームで適切に動作するものを作成することが重要です。