-Bash /bin /rm lista argumentów zbyt długo - rozwiązanie
- 3357
- 933
- Pan Jeremiasz Więcek
Objawy
Ten komunikat o błędzie pojawia się, gdy próbujesz usunąć, przenieść lub skopiować długą listę plików. Podczas korzystania z powłoki polecenie może zaakceptować tylko ograniczoną liczbę argumentów. Gdy liczba argumentów dostarczonych do polecenia przekroczy dozwoloną liczbę argumentów, pojawi się komunikat o błędzie:
-bash: /bin /rm: lista argumentów zbyt długopolecenie Linux, aby znaleźć limit maksymalnych argumentów:
# getConf arg_max 2097152
Przykład:
# rm * -Bash: /bin /rm: lista argumentów zbyt długa
Rozwiązanie
Istnieje liczba rozwiązań tego problemu. Po pierwsze, jeśli nie ma plików w katalogu, chcielibyśmy zachować, najlepszym i najszybszym rozwiązaniem jest po prostu usunięcie całego katalogu i ponowne odtworzenie. Zanim przejdziesz do upewnienia się, że katalog nie zawiera plików, które chcesz zachować i że weźmiesz pod uwagę uprawnienia i własność tego katalogu.
$ cd… / $ ls -d myDirectory $ rm -fr myDirectory $ mkdir myDirectory
Drugim rozwiązaniem jest zaangażowanie pętli dla i usunięcie wszystkich plików jeden:
$ dla i in *; do rm „$ i”; zrobione
lub znacznie szybciej za pomocą printf
I Xargs
:
$ printf '%s \ 0' * | Xargs -0 Rm
Lub
$ Time Echo -n * | tr "\ 0 '| xargs -0 rm
Jednak powyższe rozwiązanie ma swoje własne ograniczenie, ponieważ może również usunąć pliki, które chcielibyśmy zachować, jeśli nie ma odpowiedniego wyrażenia regularnego. Jeśli chodzi o przykład tutaj, usuniemy tylko *.tekst
akta:
$ dla i w *.tekst; do rm „$ i”; zrobione
Ostatnim i proponowanym rozwiązaniem jest użycie Regex do podziału wszystkich plików na mniejsze partie. Znajdź podobny wzór we wszystkich plikach i podziel je na mniejsze grupy. Na przykład najpierw usuń, skopiuj lub przenieś wszystkie pliki, które zaczynają się od A
i mają rozszerzenie tekst
, potem wszystkie pliki, które zaczynają się od B
i tak dalej.:
$ rm a*.txt $ rm b*.tekst
Możesz także zrobić powyższe dla wszystkich liter za pomocą pętli dla:
$ dla i in $ (echo a… z); do rm $ i*.tekst ; zrobione
Powiązane samouczki Linux:
- Jak przesuwać folder na Linux
- Podstawowe polecenia Linux
- Polecenia Linux: Top 20 najważniejsze polecenia, które musisz…
- VIM Editor Basics w Linux
- Skrypt bash: Wykorzystanie flag z przykładami argumentów
- Jak skonfigurować serwer OpenVPN na Ubuntu 20.04
- Polecenie człowieka w Linux z przykładami
- Ubuntu 20.04: Lista klientów torrentów
- Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
- Jak zarządzać historią Bash