jpg
以下を使用してすべての画像を取得できます。
find . -name "*.jpg"
png
しかし、結果にファイルを追加するにはどうすればよいですか?
答え1
-o
さまざまなパラメータ間でフラグを使用してください。
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
奇跡的に動作します。
ノートそこ〜しなければならない角かっこと内容の間にスペースが必要です。それ以外の場合は動作しません。
説明する:
-type f
- ファイルのみ検索(ディレクトリを除く)\(
&\)
--type f
すべてのパラメーターに適用する必要があります。-o
- 論理OR演算子-iname
- 似ています-name
が、一致するかどうかは大文字と小文字を区別しません。
答え2
-o
条件文をasと組み合わせることができます。シャドールが提案。接続よりも優先順位が低いため、-o
括弧が必要な場合があります。
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( -name '*.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)'
答え3
これがより正確です:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
答え4
ファイルのみが必要な場合:
find ./ -type f -regex '.*\.\(jpg\|png\)$'
たとえば、「blah.jpg」というディレクトリと一致しません。