Saya memiliki direktori dengan banyak ekstensi file yang dicampur dan saya ingin membuat daftar ekstensi file tertentu (mungkin seperti grep *.mp3 ) dan saat mendaftar, hapus dengan output. Bagaimana saya bisa melakukannya atau jika ada penipuan, jangan ragu untuk menandai saya.
Contoh:
grep "*.mp3" . | rm -fr
Jawaban yang Diterima:
Mari kita mulai dengan direktori dengan tiga mp3 file:
$ ls *mp3
a.mp3 b.mp3 c.mp3
Sekarang, mari kita hapus setelah kita membuat daftar apa yang kita hapus:
$ find . -maxdepth 1 -name '*.mp3' -printf 'Deleting %p\n' -delete
Deleting ./a.mp3
Deleting ./b.mp3
Deleting ./c.mp3
Setelah ini selesai, mp3 file hilang:
$ ls *mp3
ls: cannot access '*mp3': No such file or directory
Cara kerjanya
-
`temukan .
Ini memulai
findmemerintah. Ini akan mencari file di direktori saat ini,.. -
-maxdepth 1Secara default,
findmencari subdirektori secara rekursif. Ini memberitahunya untuk tidak melakukan itu. Dengan-maxdepth 1, perintahfindhanya akan melihat apa yang ditemukan di direktori saat ini dan tidak menjelajahi subdirektori direktori saat ini. -
-name '*.mp3'Ini memberitahu find untuk hanya mencari file dengan
.mp3ekstensi. -
-printf 'Deleting %p\n'Ini memberitahu find untuk mencetak pesan tentang setiap file yang ditemukan.
Anda tentu saja dapat mengubah ini ke pesan lain jika Anda mau. Jika Anda tidak menginginkan pesan, maka opsi ini dapat dihilangkan seluruhnya.
-
-deleteIni memberitahu find untuk menghapus setiap file.
Penelusuran tidak peka huruf besar/kecil
Jika Anda juga ingin mencari file bernama .MP3 atau .Mp3 dll., maka kita memerlukan pencarian case-insensitive dan kita menggunakan -iname :
find . -maxdepth 1 -iname '*.mp3' -printf 'Deleting %p\n' -delete