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

So verschieben Sie eine große Anzahl von Dateien in Linux

Um Dateien von einem Verzeichnis in ein anderes zu verschieben, muss die Datei „mv ‘-Befehl wird unter Linux verwendet. Dieser Befehl ist standardmäßig in Linux verfügbar und kann zum Verschieben von Dateien und Verzeichnissen verwendet werden.

Die für den mv-Befehl zu verwendende Syntax ist:

$ mv file1 file2 /tmp

Wenn wir beispielsweise Dateien mit derselben Erweiterung verschieben möchten (z. B. txt ) oder die aufsteigend nummeriert sind (zB file_1 , Datei_2 , usw.), können Platzhalter verwendet werden, um alle diese Dateien anzugeben, anstatt jeden Namen einzugeben.

$ mv *.txt /tmp
$ mv file_* /tmp

Im Grunde genommen „mv ‘ kann eine beliebige Anzahl von Argumenten haben, die die zu verschiebenden Dateien oder Verzeichnisse sind. Das letzte Argument ist das Zielverzeichnis, in das sie verschoben werden sollen.

Problem beim Verschieben einer großen Anzahl von Dateien

Linux-Systeme haben eine vordefinierte Grenze für die maximale Anzahl von Argumenten, die mit einem einzigen Befehl verwendet werden können. Diese Grenze variiert von System zu System basierend auf der Stapelgröße.

Werden also sehr viele Dateien mit dem Platzhalter mit ‘mv angegeben ', Z.B. über hunderttausend Dateien wird ein Fehler ausgegeben:„Argument list too long “.

In der Abbildung unten enthält der Ordner beispielsweise 253420 Dateien. Daher gibt es den oben genannten Fehler, wenn wir versuchen, sie zu verschieben.

$ ls -l | wc -l
$ ls | head -1000
$ mv file_* /tmp

Lösung:Verwenden Sie den „Suchen“-Befehl

Um dieses Problem zu lösen, verwenden wir die Funktion „find“. ' Befehl. Die Datei „finden ‘-Befehl sucht grundsätzlich nach Dateien in Verzeichnissen basierend auf verschiedenen Parametern.

Wir führen „find“ aus ‘ im selben Verzeichnis wie die Dateien, die wir verschieben möchten. Dann verwenden wir den '-exec' Parameter von ‘find ‘, wodurch Sie jeden Befehl über die Ausgabe von find.

ausführen können

Wir betreiben „mv ‘ mit '-exec' Parameter.

$ find . -name "file_*" -exec mv  {} /tmp \;

Hier das erste Argument, '.' ((Punkt) aktuelles Verzeichnis) ist das Verzeichnis, in dem die Dateien zu finden sind. Das Argument “-name” und die Zeichenfolge danach geben den Ausdruck an, mit dem benötigte Dateien aufgelistet werden können.

Dann spezifizieren wir das ‚mv ‘ Befehl nach einem Argument '-exec' . Die offenen Klammern '{ }' sind ein Platzhalter für das zu verwendende Argument aus der Ausgabe von find.

Sie können dies bestätigen, indem Sie Folgendes ausführen und überprüfen, ob die Dateien erfolgreich nach ‘/tmp’ verschoben wurden .

$ ls -l /tmp | wc -l

Verwandte Lektüre :So kopieren Sie eine große Anzahl von Dateien unter Linux

Schlussfolgerung

In diesem Artikel haben wir gesehen, wie Sie eine große Anzahl von Dateien von einem Verzeichnis in ein anderes verschieben und die „Argumentliste zu lang erfolgreich umgehen können ’ Fehler in Linux.

Wenn Sie Feedback oder Fragen haben, teilen Sie uns dies in den Kommentaren unten mit!


Linux
  1. So erhöhen Sie das Limit für die Anzahl der geöffneten Dateien in Linux

  2. So benennen Sie Dateien unter Linux um

  3. So finden Sie große Dateien unter Linux mit den Befehlen find und du

  4. Wie kann ich Dateien mit xargs unter Linux verschieben?

  5. Wie verschiebt man eine Partition in GNU/Linux?

So kopieren Sie eine große Anzahl von Dateien unter Linux

So können Sie große (100 GB+) Dateien unter Linux schneller komprimieren

So pingen Sie eine Portnummer in Linux an

So verwenden Sie den More-Befehl in Linux, um große Textdateien zu lesen

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

So komprimieren Sie eine Datei unter Linux