Saya bisa mendapatkan semua jpg
gambar dengan menggunakan:
find . -name "*.jpg"
Tetapi bagaimana saya bisa menambahkan png
file ke hasil juga?
find
regular-expression
wong2
sumber
sumber
find -name
pola yang cocok dengan banyak pola di SOJawaban:
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)\(
- diperlukantype -f
agar berlaku untuk semua argumen-o
- operator logika ATAU-iname
- seperti-name
, tetapi pertandingan tidak peka huruf besar-kecilsumber
type -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.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 .Pada FreeBSD, NetBSD dan OSX, Anda dapat menggunakan
-regex
gabungan dengan-E
untuk regexps yang diperluas.sumber
-iname
daripada-name
- maka Anda juga akan menangkapimage.JPG
danimage.PnG
Ini lebih benar:
sumber
-iregex
cocokjpg
jugaJPG 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:
Itu karena versi OS X sedikit berbeda, tetapi itu penting untuk menulis hal-hal yang berjalan baik di sebagian besar platform.
sumber
-type f \( -iname \*.png -o -iname \*.jpg\)
tidak berfungsi pada OSX?Gunakan.
sumber