次を使用して、すべてのjpg画像を取得できます。

find . -name "*.jpg" 

しかし、pngファイルも結果に追加するにはどうすればよいですか?

コメント

回答

異なるパラメーター間で-oフラグを使用します。

find ./ -type f \( -iname \*.jpg -o -iname \*.png \)は魅力のように機能します。

ブラケットとその内容の間にスペースが必要です 動作しません。

説明:

  • -type f-ファイルのみを検索します(ディレクトリは検索しません)
  • \( & \)-type fをすべての引数に適用するには
  • -o-論理OR演算子
  • -iname-nameと同様ですが、一致は大文字と小文字を区別しません

コメント

  • 括弧は必要ですか。コマンドはそれらなしで私のために働きます。一部のシェルには必要ですか?
  • @mikedコマンドは"機能します"はい、しかし'は、.pngで終わるディレクトリや、.jpgで終わるファイルでヒットすることになりますが、これは意図したとおりではありません。
  • 明確にしてくれてありがとう! type -fは拡張されず、括弧なしの両方の式に適用されます。したがって、find ./ -type f -iname \*.jpg -o -type f -iname \*.pngも機能します…ただし' 2文字長くなります:-)
  • '演算子の優先順位の問題です。 a * b + ca * (b + c)
  • @jdhaoと異なるように、良いキャッチ、修正されました。

回答

と基準を組み合わせることができます。

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(基本的な正規表現\|などのいくつかの拡張機能です)。 拡張正規表現に切り替えるオプションがあります。

find -regex ".*\.\(jpg\|png\)" find -regextype posix-extended -regex ".*\.(jpg|png)" 

FreeBSDでは、NetBSDおよびOSXでは、-regex-Eと組み合わせて拡張正規表現に使用できます。

find -E . -regex ".*\.(jpg|png)" 

コメント

  • 'は常に-iname -nameの代わりに— image.JPGimage.PnG
  • もキャプチャします

回答

これはより正確です:

find . -iregex ".*\.\(jpg\|gif\|png\|jpeg\)$" 

コメント

  • "もっと"正しいと言うのはなぜですか?
  • @Kevin -iregexjpgおよびJPG Jpg jpGなど。$は'必要ないと思います。
  • これは MinGW で正常に機能します。
  • 最初に、最初の引数として検索フォルダーを省略しました。エラー。次に、OSXでは括弧をエスケープしても機能しないため、代わりにこれを使用する必要があります:@sorin 'の回答に示されているようにfind -E . -iregex '.*\.(jpg|png|gif)'

回答

明確にするために、Linux、Unix、macOSフレーバーで機能する唯一のオプションは次のとおりです。

find -E . -regex ".*\.(jpg|png)" 

これは、OS Xのバージョンが少し異なるためですが、ほとんどのプラットフォームでうまく機能するものを作成するために重要です。

コメント

  • -EフラグはUbuntu14.04での検索には無効です
  • -Eフラグは

MinGW のいずれか(少なくとも、試してみたバージョン/構成(特定のバージョンのデフォルト構成))。

  • -type f \( -iname \*.png -o -iname \*.jpg\)はOSXで機能しませんか?
  • -type f \( -iname \*.png -o -iname \*.jpg\)がOSXで機能することを確認できます
  • 回答

    /\.(jpe?g|png|gif|bmp)$/i; 

    使用してください。

    コメントs

    • これについて少し説明する必要があるかもしれません。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です