Відповіді:
Використовуйте -o
прапор між різними параметрами.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
працює як шарм.
Примітка Там повинно бути простір між кронштейном і його зміст або він не буде працювати.
Пояснення:
type -f
- лише пошук файлів (не каталогів)\(
- необхідний для type -f
застосування для всіх аргументів-o
- логічний оператор АБО-iname
- як -name
, але відповідність нечутлива до регіструtype -f
Чи не поширюється і поширюється на обох виразів без дужок, так, find ./ -type f -iname \*.jpg -o -type f -iname \*.png
теж працює ... хоча це два символи більше :-)
a * b + c
і відрізняється відa * (b + c)
Ви можете комбінувати критерії з , -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
для комбінування розширень більш стислим способом. За замовчуванням синтаксис regexp - 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
візерунок, який відповідає декільком шаблонам на SO