GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie berechnet man die Anzahl der Dateien, die als Argumente an einen Befehl zur Stapelverarbeitung übergeben werden können?

Lassen Sie xargs die Berechnung für Sie erledigen.

printf '%s\0' files/* | xargs -0 mv -t new_files_dir

Ihre Frage scheint davon auszugehen, dass es eine tatsächliche "Grenze der Anzahl der Argumente" gibt, während es sich tatsächlich um eine Kombination aus zwei Grenzen handelt:

  1. die Summe der Stringlängen der Kommandozeilenargumente und Umgebungsvariablen einschließlich ihrer abschließenden NUL-Bytes.

  2. die maximale Zeichenfolgenlänge eines einzelnen Befehlszeilenarguments.

Beispielsweise können Sie möglicherweise einen Befehl mit 200.000 Einbuchstaben-Argumenten aufrufen, mit 100.000 Zweibuchstaben-Argumenten, aber nicht mit einem einzigen Argument von mehr als 128 KB.

Angenommen xargs von GNU Coreutils, xargs --show-limits </dev/null wird zeigen, was diese Limits auf Ihrem System sind.

Auf jedem System xargs wird nicht nutzen Sie die maximalen Grenzen Ihres Systems beim Erstellen von Befehlszeilen, wählen Sie aber etwas Vernünftiges (es würde überhaupt keinen Sinn machen, das System auf diese Weise zu belasten).


Wenn es wirklich darauf ankommt, könnten Sie Ihren eigenen batch-move schreiben Programm in C, das z.B. die Dateiliste als Standardeingabe und übernimmt das Verschieben mit den entsprechenden Unix-Systemaufrufen.

Wenn nicht, ist das "Grenzen herausfinden und daran arbeiten" genau was xargs(1) (GNU-Version unter Linux, hier) tut es. Ich bezweifle sehr, dass du viel schneller wirst.


Linux
  1. Wie führe ich einen Befehl als Systemadministrator (root) aus?

  2. So verwenden Sie den Linux-Befehl find zum Suchen von Dateien

  3. Shell - Wie finde ich das Verzeichnis eines Befehls?

  4. Wie kann ich einen anderen Befehl ausführen, aber mit denselben Argumenten?

  5. Wie kann ich eine Datei mit Zeilennummern öffnen, die von der Befehlszeile in 'vi' angezeigt werden?

So suchen Sie nach Dateien über die Linux-Befehlszeile

So finden Sie Dateien mit dem fd-Befehl in Linux

So verwenden Sie den fd-Befehl auf einem Linux-System

So zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux

Wie verwende ich den xargs-Befehl unter Linux?

So verwenden Sie den which-Befehl in Linux