Programmierung & Skripten

-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 
CKSUM- SCHANUAL
Name CKSUM - Prüfsumme und zählen Sie die Bytes in einer Datei Synopsis CKSUM [Datei]… CKSUM [Option] Beschreibung Drucken Sie CRC -Kontrollsumme und ...
Tar-Manual-Seite
Name Tar - Die GNU -Version des Tar Archiving Utility Synopsis Tar [ -] a -catenate -Concatenate | C -create | d -diff -compare | -Delete | R -Append....
C Programmier -Tutorial
Diese Artikelreihe widmet sich der Entwicklung auf Linux -Systemen. Dieses Tutorial konzentriert sich auf C -Programmierung und deckt Konzepte wie Typ...