Perintah Bash untuk Menghapus File secara Rekursif/Massal

cli-kecil

Ketika melakukan setup mirror utama openSUSE Indonesia akhir pekan lalu, saya banyak menggunakan rsync untuk melakukan sinkronisasi isi dari satu repo ke repo yang lain. Rsync berjalan lancar meski saya sempat mendapat celaka karena mengaktifkan opsi –delete padahal rsync sumber memiliki koleksi iso lebih sedikit daripada koleksi iso yang sudah ada. Alhasil aku mengulang proses rsync untuk iso yang dihapus.

Iso dan mirror utama (oss, non-oss dan packman) dapat dengan mudah di rsync. Saya mendapat kesulitan ketika hendak melakukan sinkronisasi repo untuk KDE 4 dan kawan-kawan yang sumbernya berasal dari build service openSUSE.

Sebenarnya bisa saja melakukan rsync dari server utama yang ada di Jerman namun aksesnya lambat sekali. Mirror openSUSE yang saya setup ini memang ditujukan bagi pengguna di Indonesia sehingga akses IIX untuk lokal cukup besar sedangkan akses internasional terbatas.

Satu-satunya repo online lokal yang memiliki repositories KDE 4 adalah FOSS-ID. Sayangnya FOSS-ID tidak menyediakan akses rsync sehingga saya terpaksa menggunakan perintah wget untuk melakukan mirror dan melakukan download file secara rekursif.

Celakanya, wget ikut-ikutan melakuka download file index, jadi meski letaknya ada di http://mirror1.opensuse.or.id, alamatnya tetap tertulis dan merujuk ke FOSS-ID. Saya bisa menghilangkannya dengan cara melakukan penghapusan file index, namun dengan sekian ribu file index yang yang terletak diberbagai folder yang berbeda, akan butuh waktu yang sangat lama dan melelahkan jika menghapusnya satu per satu secara manual.

Jika aksesnya dilakukan di komputer saya, saya bisa dengaan mudah menggunakan fasilitas search atau aplikasi khusus seperti fslint, namun karena saya hanya melakukan ssh ke server mirror, saya hanya bisa menggunakan perintah yang dijalankan melalui shell command.

Usut punya usut, ternyata saya bisa dengan mudah melakukan penghapusan file dengan pattern tertentu dengan perintah singkat dan mudah. Berikut adalah contoh perintah yang saya gunakan untuk menghapus semua file index diseluruh folder dan anak folder yang ditunjuk :

find /home/vavai/repo/repositories -type f -name "index*" -exec rm -f {} \;

Perintah diatas akan mencari semua file index (index.php, index.html, index.htm) didalam folder /home/vavai/repo/repositories dan menghapusnya. Untuk nama file bisa menggunakan regular expression.

Jika khawatir salah hapus, kita bisa mengganti perintah rm dengan perintah ls sehingga jika bertemu dengan file yang dimaksud, perintah tersebut akan menampilkannya. Dengan demikian, kita bisa mengecek apakah perintah tersebut sudah benar atau belum.

Hati-hati menggunakan regular expression pada nama file yang dicari karena anda mungkin saja salah menempatkan regular expression dan mengakibatkan perintah diatas salah menghapus.

Popularity: 33% [?]

3 Responses to “ Perintah Bash untuk Menghapus File secara Rekursif/Massal ”

  1. welcome to the geek user land :=))

  2. btw, wget.log nya masih ketinggalan pak :D

  3. Salam Open Source. apakah saya bisa dikirimkan tutorial Linux OpenSuse (dalam bentuk PDF atau OpenOffice) via alamat email saya. karena saya mau migrasi ke sistem OS Linux. terima kasih dan semoga sukses untuk Anda semua

Leave a Reply

You can use these XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <em> <strong>