-Bash /Bin /RM Senarai Argumen Terlalu Panjang - Penyelesaian
- 4047
- 1263
- Dave Kreiger V
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 lamaPerintah 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