Saya perlu menemukan semua file gambar dari direktori (gif, png, jpg, jpeg).
find /path/to/ -name "*.jpg" > log
Bagaimana cara memodifikasi string ini untuk menemukan tidak hanya file .jpg?
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
akan bekerja. Mungkin ada cara yang lebih elegan.
sumber
find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -exec ls -l {} \;
jika eksekutif hanya berlaku untuk bagian terakhir (-iname '*.jpg'
dalam hal ini).find /path/to/ -iname '*.gif' -o -iname '*.jpg' -print0
hanya akan mencetak file jpg! Anda membutuhkan tanda kurung di sini:find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -print0
find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log
The
-E
menyelamatkan Anda dari keharusan untuk melarikan diri parens dan pipa di regex Anda.sumber
-E
opsi memberitahufind
untuk menggunakan "ekspresi reguler yang diperluas". Beberapa alat lain memiliki opsi serupa, tetapi saya tidak yakin opsi ini tersedia di semua distribusi UNIX.find . -regextype posix-extended -regex ".*\.(jpg|gif|png|jpeg)"
.find -E /path/to -iregex ".*\.(jpg|gif|png|jpeg)" > log
. Menggunakan-iregex
flag memberitahufind
untuk mencocokkan case dengan tidak sensitif.Ini menggunakan
file
perintah untuk mencoba mengenali jenis file, terlepas dari nama file (atau ekstensi).Jika
/path/to
atau nama file berisi stringimage
, maka di atas dapat mengembalikan hit palsu. Dalam hal ini, saya sarankansumber
sumber
-iname *.jpg
,-o -name *.jpeg
,-o -iname *gif
Semua memiliki format yang sedikit berbeda.Sebagai tambahan terhadap respons @Dennis Williamson di atas, jika Anda ingin regex yang sama tidak peka terhadap ekstensi file, gunakan -iregex:
sumber
Pada penggunaan Mac OS
sumber
sumber
jika file tidak memiliki ekstensi, kita dapat mencari jenis file mime
di mana (audio | video | matroska | mpeg) adalah jenis mime regex
& jika Anda ingin menghapusnya:
atau hapus semua yang lain kecuali ekstensi itu:
perhatikan! ~ bukannya ~
sumber