-Bash /Bin /RM Senarai Argumen Terlalu Panjang - Penyelesaian

-Bash /Bin /RM Senarai Argumen Terlalu Panjang - Penyelesaian

Gejala

Mesej ralat ini muncul apabila anda cuba membuang, memindahkan atau menyalin senarai panjang fail. Semasa menggunakan shell anda, perintah hanya boleh menerima bilangan argumen yang terhad. Apabila bilangan argumen yang dibekalkan ke arahan melebihi bilangan argumen yang dibenarkan, mesej ralat akan muncul:

-bash: /bin /rm: Senarai argumen terlalu lama 
Perintah Linux untuk mencari had anda untuk hujah maksimum:
# getconf arg_max 2097152 

Contoh:

# rm * -bash: /bin /rm: Senarai argumen terlalu lama 

Penyelesaian

Terdapat jumlah penyelesaian untuk masalah ini. Pertama, jika tidak ada fail dalam direktori yang kami ingin simpan, penyelesaian terbaik dan terpantas adalah dengan hanya menghapuskan seluruh direktori dan mencipta semula lagi. Sebelum anda meneruskan memastikan bahawa direktori tidak mengandungi fail yang anda ingin simpan dan anda mengambil nota mengenai kebenaran dan pemilikan direktori ini.

$ cd ... / $ ls -d mydirectory $ rm -fr mydirectory $ mkdir mydirectory 

Penyelesaian yang lain adalah untuk melibatkan gelung dan mengeluarkan semua fail yang menjadi satu:

$ untuk saya dalam *; lakukan rm "$ i"; selesai 

atau lebih cepat dengan menggunakan printf dan Xargs:

$ printf '%s \ 0' * | Xargs -0 Rm 

atau

$ time echo -n * | tr "\ 0 '| xargs -0 rm 

Walau bagaimanapun, penyelesaian di atas mempunyai batasannya sendiri kerana ia juga boleh mengeluarkan fail yang kami ingin simpan jika tiada ekspresi biasa yang betul di tempatnya. Bagi contoh di sini kita akan membuang sahaja *.txt Fail:

$ untuk saya *.txt; lakukan rm "$ i"; selesai 

Penyelesaian yang terakhir dan dicadangkan adalah menggunakan Regex untuk memecah semua fail ke dalam kelompok yang lebih kecil. Cari corak yang sama dalam semua fail dan memecahnya ke dalam kumpulan yang lebih kecil. Contohnya terlebih dahulu mengeluarkan, menyalin atau gerakkan semua fail yang bermula dengan a dan mempunyai lanjutan txt, Selepas itu semua fail yang bermula dengan b dan sebagainya.:

$ rm a*.txt $ rm b*.txt 

Anda juga boleh melakukan perkara di atas untuk semua huruf menggunakan gelung:

$ untuk i dalam $ (echo a ... z); buat rm $ i*.txt; selesai 

Tutorial Linux Berkaitan:

  • Cara Memindahkan Folder di Linux
  • Perintah Linux Asas
  • Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
  • Asas Editor Vim di Linux
  • Skrip Bash: Penggunaan Bendera dengan Contoh Argumen
  • Cara Menyiapkan Pelayan OpenVPN di Ubuntu 20.04
  • Perintah Man di Linux dengan contoh
  • Ubuntu 20.04: Senarai pelanggan torrent
  • Ubuntu 20.04 Trik dan Perkara yang Anda Tidak Tahu
  • Cara Mengurus Sejarah Bash