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.
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!