Ada beberapa cara berbeda untuk menghapus direktori di sistem Linux. Jika Anda menggunakan pengelola file Desktop seperti File Gnome atau KDE Dolphin maka Anda dapat menghapus file dan direktori menggunakan tombol delete. Tetapi, jika Anda bekerja pada server tanpa GUI atau ingin menghapus banyak direktori sekaligus, pilihan terbaik Anda adalah menghapus direktori (folder) terebut dari baris perintah.
Pada artikel ini, kami akan menjelaskan cara menghapus direktori di Linux menggunakan perintah rmdir
, rm
dan find
.
Sebelum memulai
Ketika Anda menghapus direktori dengan menggunakan Desktop file manajer Anda, direktori tersebut sebenarnya dipindahkan ke direktori “Sampah” dan dapat dengan mudah dipulihkan.
Berhati-hatilah saat menghapus file atau direktori dari baris perintah, karena begitu direktori dihapus menggunakan perintah yang dijelaskan dalam artikel ini, maka file atau direktori tersebut tidak dapat sepenuhnya dipulihkan.
Pada kebanyakan sistem file Linux, menghapus direktori memerlukan izin write pada direktori dan kontennya. Kalau tidak, Anda akan mendapatkan kesalahan “Operation not permitted“.
Nama direktori dengan spasi di dalamnya berakhiran dengan backslash (/
).
Hapus Direktori dengan Perintah rmdir
rmdir
adalah utilitas baris perintah untuk menghapus direktori kosong. Ini berguna ketika Anda ingin menghapus direktori jika direktori tersebut kosong, tanpa perlu memeriksa apakah direktori tersebut kosong atau tidak.
Untuk menghapus direktori dengan rmdir
, ketikkan perintah diikuti dengan nama direktori yang ingin Anda hapus. Misalnya, untuk menghapus direktori bernama dir1
Anda harus mengetik:
rmdir dir1
Jika direktori tidak kosong (ada isinya) Anda akan mendapatkan kesalahan berikut:
rmdir: failed to remove 'dir1': No such file or directory
Dalam hal ini, Anda harus menggunakan perintah rm
atau menghapus secara manual isi direktori sebelum Anda dapat menghapusnya.
Menghapus Direktori dengan Perintah rm
Perintah rm
adalah utilitas baris perintah untuk menghapus file dan direktori. Tidak seperti rmdir
, perintah rm dapat menghapus direktori baik kosong maupun yang ada isinya.
Secara default, ketika digunakan tanpa opsi, rm tidak menghapus direktori. Untuk menghapus direktori kosong, gunakan opsi -d
(--dir
) dan untuk menghapus direktori yang tidak kosong dan semua isinya gunakan opsi -r
(--recursive
atau cukup -R
).
Misalnya untuk menghapus direktori bernama dir1
beserta semua isinya, Anda akan mengetik:
rm -r dir1
Jika direktori atau file di dalam direktori tersebut dilindungi (write-protected), Anda akan diminta untuk mengkonfirmasi penghapusan. Untuk menghapus direktori tanpa konfirmasi, gunakan opsi -f
:
rm -rf dir1
Untuk menghapus banyak direktori sekaligus, gunakan perintah rm diikuti dengan nama-nama direktori yang dipisahkan oleh spasi. Perintah di bawah ini akan menghapus setiap direktori yang tercantum dan isinya:
rm -r dir1 dir2 dir3
Opsi -i
memberi tahu rm
untuk meminta Anda mengonfirmasi penghapusan setiap subdirektori dan file. Jika direktori berisi banyak file ini bisa jadi sedikit mengganggu sehingga Anda dapat mempertimbangkan menggunakan opsi -I
apa yang akan mengkonfirmasi Anda hanya sekali sebelum melanjutkan penghapusan.
rm -rI dir1
untuk menghapus directori, ketik y
dan kemudian tekan Enter
.
rm: remove 1 argument recursively? y
Anda juga dapat menggunakan ekspansi reguler untuk mencocokkan dan menghapus beberapa direktori. Misalnya, untuk menghapus semua direktori tingkat pertama di direktori saat ini yang diakhiri dengan _bak,
Anda akan menggunakan perintah berikut:
rm -r *_bak
Menggunakan ekspansi reguler ketika menghapus direktori mungkin berisiko. Disarankan terlebih dahulu untuk mendaftar direktori dengan perintah ls
sehingga Anda dapat melihat direktori apa yang akan dihapus sebelum menjalankan perintah rm
.
Menghapus Direktori dengan find
find
adalah utilitas baris perintah yang memungkinkan Anda untuk mencari file dan direktori berdasarkan ekspresi yang diberikan dan melakukan tindakan pada setiap file atau direktori yang cocok.
Skenario yang paling umum adalah dengan menggunakan perintah find
untuk menghapus direktori berdasarkan suatu pola. Misalnya, untuk menghapus semua direktori yang diakhiri dengan _cache
di direktori kerja saat ini , Anda dapat menjalankan:
find . -type d -name '*_cache' -exec rm -r {} +
Mari kita menganalisis perintah di atas:
- /dir – pencarian secara rekursif di direktori kerja saat ini (
.
) - -type d – membatasi pencarian ke direktori.
- -name ‘*_cache’ – hanya mencari direktori yang diakhiri dengan _cache
- -exec – mengeksekusi perintah eksternal dengan argumen opsional, dalam hal ini yaitu
rm -r.
- {} + – menambahkan file yang ditemukan ke akhir perintah rm.
Menghapus semua direktori yang kosong
Untuk menghapus semua direktori kosong di pohon direktori, yang akan Anda gunakan:
find /dir -type d -empty -delete
Begini penjelasan setiap perintah di atas:
- /dir – pencarian secara rekursif di direktori
/dir.
- -type d – membatasi pencarian ke direktori.
- -empty – membatasi pencarian hanya untuk mengosongkan direktori.
- -delete – menghapus semua direktori kosong yang ditemukan di subtree. Opsi
-delete
hanya dapat menghapus direktori kosong.
Gunakan opsi -delete
dengan sangat hati-hati. Baris perintah find
dievaluasi sebagai ekspresi dan jika Anda menambahkan opsi -delete
terlebih dahulu, perintah akan menghapus semuanya di bawah titik awal yang Anda tentukan. Selalu gunakan -delete
sebagai opsi terakhir dan sebelum menghapus, uji perintah terlebih dahulu tanpa opsi -delete
.
/bin/rm: Argument list too long
Pesan kesalahan “/bin/rm: Argument list too long” muncul ketika Anda menggunakan perintah rm untuk menghapus direktori yang berisi sejumlah besar file. Ini terjadi karena jumlah file lebih besar dari batas sistem pada ukuran argumen baris perintah.
Ada beberapa solusi berbeda untuk masalah ini. Misalnya, Anda dapat melakukan cd
ke direktori dan secara manual atau menggunakan loop untuk menghapus sub-direktori satu per satu.
Solusi termudah adalah pertama-tama menghapus semua file dalam direktori dengan perintah find
dan kemudian hapus direktori dari hasil pencarian yang ada:
find /dir -type f -delete && rm -r /dir
Kesimpulan
Dengan rm
dan find
, Anda dapat menghapus direktori berdasarkan kriteria berbeda dengan cepat dan efisien.
Menghapus direktori adalah proses yang sederhana dan mudah tetapi Anda harus berhati-hati untuk tidak menghapus data penting.