Artikel ini melanjutkan serangkaian artikel tentang shell Linux dan mencakup tiga cara paling berguna untuk menghapus file dan direktori. Kami juga membahas kasus luar biasa seperti menghapus direktori dengan sejumlah besar file di dalamnya, menghapus file atau direktori dengan karakter khusus di namanya. Tingkatkan keterampilan Linux Anda hanya dalam 5 menit.
perintah “rmdir”
Sebelum Anda menggunakan rmdir perintah, Anda harus tahu bahwa Anda tidak akan memulihkan kembali objek yang dihapus dengan mudah.
Sekarang, buka terminal baris perintah jika Anda menggunakan Linux atau macOS. Jika Anda menggunakan Windows, Anda dapat menggunakan Windows Subsystem for Linux (WSL).
Sebelum menghapus direktori, mari kita buat dulu:
$ mkdir /tmp/docs
Sekarang, mari kita hapus dengan nama /tmp/docs menggunakan perintah berikut:
$ rmdir /tmp/docs
rmdir adalah perintah untuk menghapus direktori kosong. Ini sangat berguna, karena Anda terlindungi dari menghapus sesuatu yang penting dari sistem file Anda.
Mari validasi perilaku ini dengan meletakkan file di dalam direktori, yang ingin kita hapus:
$ mkdir -p /tmp/docs
$ touch /tmp/docs/my_file
$ tree /tmp/docs
/tmp/docs
└── my_file
0 directories, 1 file
Jika direktori Anda tidak kosong, Anda akan menerima kesalahan berikut:
$ rmdir /tmp/docs
rmdir: /tmp/docs: Directory not empty
Untuk menghapus direktori, yang berisi file, Anda perlu menggunakan rm perintah:
$ rm -rf /tmp/docs
Menghapus beberapa direktori menggunakan wildcard
Semua perintah konsol di Linux dapat memproses file dan folder menggunakan wildcard (*) pada nama file atau folder. Mari kita hapus struktur folder berikut:
$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
└── dir3
3 directories, 0 files
Untuk menghapus semua direktori, yang dimulai dari dir kita perlu menggunakan perintah berikut:
$ rmdir /tmp/docs/dir*
Inilah hasil yang diharapkan:
$ tree /tmp/docs
/tmp/docs
0 directories, 0 files
perintah “rm”
The rm command adalah perintah tujuan umum yang dapat menghapus tidak hanya direktori tetapi juga file. Namun perilaku default rm perintah tidak memungkinkan Anda untuk menghapus folder apa pun. Anda dapat menggunakan -r atau -R argumen untuk menghapus direktori, termasuk subdirektori.
Mari kita bayangkan kita memiliki struktur sistem file berikut:
$ tree /tmp/docs
/tmp/docs
├── dir1
│ └── my_file1
├── dir2
│ └── my_file2
└── dir3
└── my_file3
3 directories, 3 files
Jika Anda ingin menghapus /tmp/docs direktori sepenuhnya, gunakan perintah berikut:
$ rm -rf /tmp/docs
Dimana:
- -r – upaya untuk menghapus semua subdirektori dari direktori tertentu.
- -f – upaya untuk menghapus file tanpa konfirmasi atau izin sebelumnya.
/bin/rm:Daftar argumen terlalu panjang
Anda mungkin mendapatkan pesan kesalahan ini saat mencoba menghapus direktori dengan banyak file. Kesalahan ini terjadi karena jumlah file yang diberikan ke rm perintah lebih besar dari batas sistem pada ukuran argumen baris perintah.
Cara termudah untuk menghapus folder tersebut adalah dengan menggunakan find perintah untuk menghapus semua file terlebih dahulu, lalu menghapus direktori itu sendiri:
$ find /tmp/docs -type f -delete
$ rm -r /tmp/docs
Di sini:
- /tmp/docs – direktori untuk pencarian.
- -ketik f – memberi tahu utilitas find untuk mencari file saja.
- -hapus – memberi tahu utilitas find untuk menghapus hasil yang ditemukan.
Anda juga dapat membuat folder kosong dan menggunakan rsync utilitas:
$ mkdir empty_dir
$ rsync -a --delete empty_dir/ /tmp/docs/
Ini memakan CPU, tetapi cara tercepat untuk membersihkan /tmp/docs direktori.
perintah "temukan"
Perintah find adalah utilitas baris perintah pencarian multiguna, yang memerlukan artikel tersendiri, tetapi dalam kasus kami, kami akan menggunakannya untuk menghapus folder.
Hapus menggunakan pola pada nama
Mari kita hapus semua direktori dengan pola dir* dalam nama direktori bersarang:
$ tree /tmp/docs
/tmp/docs
├── dir1
│ └── my_file1
├── dir2
│ └── my_file2
└── dir3
└── my_file3
3 directories, 3 files
Gunakan perintah berikut untuk melakukannya:
$ find /tmp/docs -type d -name 'dir*' -exec rm -rf {} +
$ tree /tmp/docs
/tmp/docs
0 directories, 0 files
Di sini, temukan perintah akan mengembalikan semua direktori bersarang yang namanya dimulai dari dir :
$ find /tmp/docs -type d -name 'dir*'
/tmp/docs/dir2
/tmp/docs/dir3
/tmp/docs/dir1
Dan kemudian menjalankan rm -rf . yang sudah familiar perintah untuk setiap temuan (itulah sebabnya kami menggunakan {} + urutan).
Hapus semua direktori kosong dalam struktur folder
Dalam banyak kasus, Anda mungkin ingin menghapus hanya folder kosong di dalam struktur folder. Ayo hapus dir1 dan other_dir dari contoh berikut:
$ tree /tmp/docs
/tmp/docs
├── dir1
├── dir2
│ └── my_file2
├── dir3
│ └── my_file3
└── other_dir
4 directories, 2 files
Berikut cara melakukannya:
$ find /tmp/docs -type d -empty -delete
$ tree /tmp/docs
/tmp/docs
├── dir2
│ └── my_file2
└── dir3
└── my_file3
2 directories, 2 files
Hapus file dengan karakter khusus (dengan inode)
Jika nama direktori Anda berisi karakter khusus atau terdiri dari kata-kata non-bahasa Inggris, maka biasanya rm atau rmdir perintah mungkin tidak bekerja untuk Anda. Dalam hal ini, Anda dapat menghapus direktori tersebut dengan menggunakan inodenya.
Inode – adalah nomor node indeks yang mewakili file atau direktori pada sistem file.
Anda dapat menemukan nomor inode file atau direktori menggunakan perintah berikut:
$ ls -il /tmp/docs
total 0
8669007889 drwxr-xr-x 3 amaksimov wheel 96 Dec 1 18:48 dir2
8669007891 drwxr-xr-x 3 amaksimov wheel 96 Dec 1 18:46 dir3
Dalam contoh ini, dir2 folder memiliki inode 8669007889 nomor.
Sekarang, kita dapat menggunakan informasi ini untuk menghapusnya:
$ find /tmp/docs -inum 8669007889 -exec rm -rf {} +
Di sini:
- -inum – memberi tahu utilitas find untuk mencari objek sistem file dengan nomor inode 8669007889 .
- -exec rm -rf – memberi tahu utilitas find untuk memanggil rm dengan -rm argumen untuk setiap temuan ({} + ).
Ringkasan
Pada artikel ini kami menjelaskan tiga cara menghapus direktori di Linux. Kami juga membahas kasus khusus seperti menghapus folder besar atau direktori dengan karakter khusus di namanya.
Kami harap, Anda menemukan artikel ini bermanfaat. Jika ya, tolong bantu kami menyebarkannya ke seluruh dunia.
Jika Anda mengetahui kasus penggunaan menarik lainnya, yang mungkin tercakup dalam artikel, silakan hubungi kami di bagian komentar di bawah.