GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperbaiki /bin/rm:tidak dapat mengeksekusi [Daftar argumen terlalu panjang]

Perintah rm digunakan di Linux untuk menghapus file dan direktori. Ini dapat digunakan untuk menghapus beberapa file dengan menentukan setiap nama file, atau dapat digunakan dengan -r argumen (rekursif ) untuk menghapus direktori dan seluruh struktur pohon direktori yang terletak di bawahnya.

Sintaks yang digunakan untuk perintah rm adalah:

$ rm <file1> <file2> ... <fileN> 
$ rm -r <directory1> <directory2> ... <directoryN> <target_directory>

Menghapus File dan Direktori di Linux

Sintaks ini juga dapat digabungkan untuk menghapus file dan direktori sekaligus:

$ rm -r file1 file2 file3 directory1 directory2

Anda juga dapat menentukan nama file dan direktori dengan wildcard, jika namanya mirip, yaitu, awal, akhir, atau berisi pola yang sama dalam namanya. Ini sangat berguna ketika ada banyak file dengan ekstensi file yang sama yang harus dihapus.

Misalnya, untuk menghapus semua file yang nama filenya diawali dengan string ‘file ‘, kita dapat menjalankan:

$ rm file*

Demikian pula untuk menghapus semua file dengan ekstensi '.txt' , kita dapat menjalankan:

$ rm *.txt

Pada dasarnya apa yang dilakukan wildcard adalah:tempatkan semua file atau direktori yang memenuhi pola wildcard sebagai argumen ke rm . Jadi secara teoritis tidak ada batasan jumlah argumen untuk rm perintah.

Menghapus Banyak File:Kesalahan “Daftar argumen terlalu panjang”

Meskipun secara teoritis 'rm ’ tidak ada batasan jumlah argumen, ada batasan yang telah ditentukan sebelumnya pada jumlah maksimum argumen yang dapat digunakan oleh satu perintah.

Ini adalah batas yang ditentukan dalam sistem Linux dan didasarkan pada ukuran tumpukan sistem. Oleh karena itu, jika pola wildcard menempatkan puluhan ribu file atau direktori sebagai argumen, program akan menampilkan kesalahan:“Daftar argumen terlalu panjang “.

Mari kita ambil contoh folder yang berisi sekitar 2,5 lac (250rb ) file.

$ ls -l | wc -l
$ ls | head

Mari kita coba menghapusnya dengan karakter pengganti.

$ rm file*

Dengan demikian memberikan kesalahan yang disebutkan di atas. Sekarang mari kita lihat bagaimana kita bisa mengatasi kesalahan ini.

Solusi:Gunakan Perintah Temukan dengan Argumen '-exec' untuk Menghapus Ribuan File

Perintah find pada dasarnya mencari file dalam direktori berdasarkan parameter yang berbeda, seperti pola nama file, ekstensi file, dll.

Kemudian kita menggunakan '-exec' parameter ‘temukan‘ yang memungkinkan Anda menjalankan perintah apa pun pada output find .

$ find . -maxdepth 1 -name "<filename_pattern>" -exec rm -r {} \;

Di sini, argumen pertama, '.' (direktori saat ini) adalah direktori tempat menemukan file. Jika file dari beberapa direktori lain akan dihapus, Anda harus menentukan jalur ke direktori tersebut di sini.

Argumen '-maxdepth 1' hanya mempertimbangkan file dan direktori di direktori saat ini. Tanpa menentukan kedalaman ini, perintah temukan akan melihat semua subdirektori secara tidak perlu.

Argumen "-name" digunakan untuk mencari file dan direktori dengan pola string. 'filename_pattern ' menentukan pola string. Kemudian kita tentukan ‘rm -r‘ perintah setelah argumen '-exec' .

Tanda kurung buka '{ }' adalah placeholder untuk argumen yang akan digunakan dari output find.

$ find . -maxdepth 1 -name "file*" -exec rm -r {} \;

Seperti yang kita lihat, semua file telah dihapus. Perintah yang sama dapat digunakan untuk menghapus direktori secara massal, karena kita telah melewati '-r' argumen.

Kesimpulan

Dalam artikel ini, kita mempelajari tentang perintah rm command dan bagaimana masalah ‘Daftar argumen terlalu panjang ' dapat ditangani dengan menggunakan 'rm' dikombinasikan dengan 'temukan ' perintah.

Jika Anda memiliki umpan balik atau pertanyaan, beri tahu kami di komentar di bawah!


Linux
  1. Cara Memperbaiki '/ usr/bin/dirmngr':Tidak ada file atau direktori seperti itu

  2. /usr/bin Vs /usr/local/bin Di Linux?

  3. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  1. bash:/bin/tar:Daftar argumen terlalu panjang saat mengompresi banyak file dengan tar

  2. Bagaimana cara memperbaiki apt mess ini?

  3. Perbedaan antara /bin dan /usr/bin

  1. Cara mengeksekusi file .bin dan .run di Debian

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

  3. Memindahkan /bin konten ke /usr/bin, mungkin untuk membatalkan?