GNU/Linux >> Belajar Linux >  >> Linux

Cara Menghapus File Dan Direktori Di Linux

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.


Linux
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Cara menonaktifkan penghapusan otomatis file di direktori /tmp dan /var/tmp di CentOS / RHEL 5,6

  3. Bagaimana mengubah default /tmp ke /home/user/tmp

  1. Cara Mencari dan Menghapus Direktori Secara Rekursif di Linux

  2. Cara Menghapus File dan Direktori di Linux dari Command Line

  3. Cara Menghapus File dan Direktori di Command Line Linux [Tutorial Pemula]

  1. Linux Hapus File dan Direktori

  2. UNIX / Linux :Apa izin yang benar dari direktori /tmp dan /var/tmp?

  3. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux