Jawaban:
Gunakan -o
tanda di antara berbagai parameter.
find ./ -type f \( -iname \*.jpg -o -iname \*.png \)
bekerja seperti pesona.
CATATAN Ada harus menjadi ruang antara braket dan isinya atau itu tidak akan berhasil.
Penjelasan:
type -f
- hanya mencari file (bukan direktori)\(
- diperlukan type -f
agar berlaku untuk semua argumen-o
- operator logika ATAU-iname
- seperti -name
, tetapi pertandingan tidak peka huruf besar-keciltype -f
tidak meluas dan berlaku untuk kedua ekspresi tanpa tanda kurung, Jadi, find ./ -type f -iname \*.jpg -o -type f -iname \*.png
juga berfungsi ... meskipun dua karakter lebih panjang :-)
a * b + c
berbeda daria * (b + c)
Anda dapat menggabungkan kriteria dengan -o
seperti yang disarankan oleh Shadur . Perhatikan bahwa -o
memiliki prioritas lebih rendah daripada penjajaran, jadi Anda mungkin perlu tanda kurung.
find . -name '*.jpg' -o -name '*.png'
find . -mtime -7 \( '*.jpg' -o -name '*.png' \) # all .jpg or .png images modified in the past week
Di Linux, Anda dapat menggunakan -regex
untuk menggabungkan ekstensi dengan cara terser. Sintaks regexp default adalah Emacs ( regexps dasar ditambah beberapa ekstensi seperti \|
untuk pergantian); ada opsi untuk beralih ke regexps yang diperluas .
find -regex '.*\.\(jpg\|png\)'
find -regextype posix-extended -regex '.*\.(jpg|png)'
Pada FreeBSD, NetBSD dan OSX, Anda dapat menggunakan -regex
gabungan dengan -E
untuk regexps yang diperluas.
find -E . -regex '.*\.(jpg|png)'
-iname
daripada -name
- maka Anda juga akan menangkap image.JPG
danimage.PnG
Ini lebih benar:
find . -iregex '.*\.\(jpg\|gif\|png\|jpeg\)$'
-iregex
cocok jpg
juga JPG Jpg jpG
dan semacamnya. Saya pikir $
tidak diperlukan.
find -E . -iregex '.*\.(jpg|png|gif)'
seperti yang ditunjukkan dalam jawaban @ sorin.
Untuk memperjelasnya, satu-satunya opsi yang berfungsi di Linux, Unix dan rasa macOS adalah:
find -E . -regex '.*\.(jpg|png)'
Itu karena versi OS X sedikit berbeda, tetapi itu penting untuk menulis hal-hal yang berjalan baik di sebagian besar platform.
-type f \( -iname \*.png -o -iname \*.jpg\)
tidak berfungsi pada OSX?
find -name
pola yang cocok dengan banyak pola di SO