(Gelöst) -Bash /bin /mv Argumentliste zu lang

(Gelöst) -Bash /bin /mv Argumentliste zu lang

Bei der Arbeit mit einer großen Anzahl von Dateien unter Linux ist es nicht ungewöhnlich, auf den Fehler "/bin/mv: Argumentliste zu lang" zu begegnen. Dieser Fehler tritt beim Versuch auf, zu viele Dateien gleichzeitig zu verschieben oder umzubenennen, und ist eine Einschränkung des zugrunde liegenden Betriebssystems. In diesem Artikel werden wir diskutieren, was diesen Fehler verursacht. Unabhängig davon.

-Bash: /bin /mv: Argumentliste zu lange

Eine Argumentliste zu lang ist ein häufiges Problem mit einer Bash, die auftreten kann, wenn Sie lange Befehlszeilenparameter oder Argumente haben. Sie beginnen ein Skript auszuführen und es löst Fehler wie "Ungültiger Befehl" oder "zu lang" aus. Der Grund dafür ist, dass die Shell versucht, das Ende Ihrer Argumentliste zu lesen, und es gibt kein Ende des Eingangspips zum Warten. Eine Systemvariable Arg_max definiert die Maximale Charakterlänge der Argumente In einem Shell -Befehl.

Die Lösungen

Die schnelle Lösung ist zu verwenden Xargs Befehlszeilen -Dienstprogramm oder Befehl finden mit -exec… . Beide Befehle unterteilen einen großen Befehl in geringere und erledigen den Job ohne Fehler.

  • Lösung 1: Finden Sie mit Xargs
  • Um dieses Problem zu lösen, können Sie die verwenden -print0 Option mit dem "finden" Befehl und die -0 Option mit dem Befehl "xargs". Dies wird zulassen "Xargs" Um Dateien mit Leerzeichen oder Sonderzeichen in ihren Namen korrekt zu verarbeiten und die Verarbeitung großer Anzahl von Dateien zu ermöglichen, ohne auf den Fehler „Argumentliste zu lang“ zu stoßen.

    Hier ist ein Beispiel:

    finden . -Typ f -name "**.txt "-print0 | xargs -0 mv -t ~/dokumente  

    In diesem Beispiel wird die Option -print0 mit dem Befehl „Find“ verwendet, um Dateien mit einem Nullzeichen anstelle einer neuen Zeile zu trennen, und die Option -0 wird mit dem Befehl „xargs“ verwendet, um anzugeben, dass Eingabelemente durch Null getrennt sind Figuren. Auf diese Weise können „Xargs“ eine große Anzahl von Dateien verarbeiten, ohne auf den Fehler „Argumentliste zu lang“ zu stoßen.

  • Lösung 2: Finden Sie mit Exec
  • Anstatt XARGs zu verwenden, können wir auch den Befehl des Exec verwenden. Hier sucht Find Dateien und EXEC führt den Befehl MV für jede Datei nach und nach aus und verschiebt die Datei in das Zielverzeichnis.

    finden . -Name '*.txt '-exec mv  ~/ documents/ \; 

    Die standardmäßigen obigen Befehle navigieren rekursiv zu den Unterverzeichnissen. Um den Sund auf das aktuelle Verzeichnis nur zu beschränken -maximale Tiefe gefolgt von einer Grenznummer zu Unterverzeichnissen.

    finden . -Name '*.txt '-maxdepth 1 -exec mv  ~/ documents/ \; 

Abschluss

Zusammenfassend ist der Fehler „MV: Argument List zu lang“ ein häufiges Problem bei der Arbeit mit einer großen Anzahl von Dateien unter Linux. Es tritt auf, wenn die Anzahl der Dateien, die als Argumente an den Befehl „MV“ übergeben werden, die vom Betriebssystem zulässige maximale Grenze überschreitet. Um dieses Problem zu überwinden, können wir die Befehle „Find“ und „Xargs“ verwenden, um eine große Anzahl von Dateien als Argumente an den Befehl „MV“ zu übergeben, oder wir können Tools wie „parallel“ oder „gnu parallel“ verwenden, um große Ausführung zu erzielen -Skalieren Sie die Dateioperationen effizient und ohne Fehler.

Das Verständnis der Ursachen und Lösungen für den Fehler „/bin/MV: Argument List zu lang“ ist für alle wichtig, die mit einer großen Anzahl von Dateien unter Linux arbeiten, und hilft Ihnen dabei.