-Bash /bin /rm Argumentliste zu lange - Lösung

-Bash /bin /rm Argumentliste zu lange - Lösung

Symptome

Diese Fehlermeldung wird angezeigt, wenn Sie versuchen, eine lange Liste von Dateien zu entfernen, zu verschieben oder zu kopieren. Wenn Sie Ihre Shell verwenden, kann ein Befehl nur eine begrenzte Anzahl von Argumenten akzeptieren. Wenn die Anzahl der an den Befehl gelieferten Argumente die zulässige Anzahl von Argumenten überschreitet, wird eine Fehlermeldung angezeigt:

-Bash: /bin /rm: Argumentliste zu lang 
Linux -Befehl, um Ihre Grenze für maximale Argumente zu finden:
# getconf arg_max 2097152 

Beispiel:

# RM * -Bash: /bin /rm: Argumentliste zu lang 

Lösung

Es gibt eine Reihe von Lösungen für dieses Problem. Erstens, wenn es keine Dateien in einem Verzeichnis gibt, die wir behalten möchten, besteht die beste und schnellste Lösung darin, einfach das gesamte Verzeichnis zu entfernen und erneut neu zu erstellen. Bevor Sie fortfahren.

$ cd… / $ ls -d mydirectory $ rm -fr myDirectory $ mkdir mydirectory 

Die andere Lösung besteht darin, A für Schleife einzubeziehen und alle Dateien zu entfernen, die eins sind:

$ für mich in *; mach rm "$ i"; Erledigt 

oder viel schneller durch Verwendung von printf Und Xargs:

$ printf '%s \ 0' * | xargs -0 rm 

oder

$ time echo -n * | Tr "\ 0 '| Xargs -0 rm 

Die obige Lösung hat jedoch ihre eigene Einschränkung, da sie auch Dateien entfernen kann. Wie für ein Beispiel hier werden wir nur entfernen *.txt Dateien:

$ für mich in *.txt; mach rm "$ i"; Erledigt 

Die letzte und vorgeschlagene Lösung besteht darin, Regex zu verwenden, um alle Dateien in kleinere Chargen aufzuteilen. Finden Sie in allen Dateien ein ähnliches Muster und teilen Sie sie in eine kleinere Gruppen auf. Zum Beispiel zuerst entfernen, kopieren oder verschieben Sie alle Dateien, die mit beginnen A und Erweiterung haben txt, Danach alle Dateien, die mit beginnen B usw.:

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

Sie können das obige auch für alle Buchstaben mit einer für die Schleife ausführen:

$ für i in $ (echo a… z); mach rm $ i*.txt ; Erledigt 

Verwandte Linux -Tutorials:

  • So verschieben Sie den Ordner auf Linux
  • Grundlegende Linux -Befehle
  • Linux -Befehle: Top 20 wichtigste Befehle, die Sie benötigen, um…
  • VIM -Editor -Grundlagen in Linux
  • Bash -Skript: FLAGS -Nutzung mit Argumentenbeispielen
  • So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04
  • MAN -Befehl in Linux mit Beispielen
  • Ubuntu 20.04: Liste der Torrent -Clients
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Wie man die Bash -Geschichte verwaltet