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
find
memerintah. Ini akan mencari file di direktori saat ini,.
. -
-maxdepth 1
Secara default,
find
mencari subdirektori secara rekursif. Ini memberitahunya untuk tidak melakukan itu. Dengan-maxdepth 1
, perintahfind
hanya 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
.mp3
ekstensi. -
-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.
-
-delete
Ini 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