История этих чисел раздела возвращается к Руководству исходного Unix-программиста Thompson и Ritchie в 1971.
Исходные разделы были
Используйте -o
флаг между различными параметрами.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
работы как очарование.
ПРИМЕЧАНИЕ. Должно быть пространство между скобкой и ее содержанием, или это не будет работать.
Объяснение:
-type f
- только поиск файлов (не каталоги)\(
& \)
- необходимы для -type f
относиться ко всем аргументам-o
- логическая операция ИЛИ-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
объединить расширения более кратким способом. Значением по умолчанию regexp синтаксис является Emacs (основной regexps плюс несколько расширений такой как \|
для чередования); существует опция переключиться на расширенный regexps.
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
На FreeBSD, NetBSD и OSX, можно использовать -regex
объединенный с -E
для расширенного regexps.
find -E . -regex '.*\.(jpg|png)'
-iname
вместо -name
— затем Вы также получите image.JPG
и image.PnG
– ccpizza
11.11.2017, 12:48
Это более корректно:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregex
соответствия jpg
а также JPG Jpg jpG
и такой. Я думаю $
не необходим. номер
– ott--
19.05.2015, 13:41
find -E . -iregex '.*\.(jpg|png|gif)'
как показано в ответе @sorin.
– ccpizza
11.11.2017, 13:36
Для прояснения единственная опция, которая работает над Linux, Unix и macOS ароматом:
find -E . -regex '.*\.(jpg|png)'
Поэтому версия OS X немного отличается, но это важно для записи вещей, которые подходят на большинстве платформ.
-type f \( -iname \*.png -o -iname \*.jpg\)
не работает над OSX?
– Shadur
16.04.2018, 10:43
type -f
не расширяется и относится к обоим выражениям без круглых скобок, Так,find ./ -type f -iname \*.jpg -o -type f -iname \*.png
также работы..., хотя это - два символа более длинный :-) – MikeD 19.03.2017, 13:58a * b + c
отличается отa * (b + c)
– Shadur 19.03.2017, 14:13