Kopieren einer Datei in mehrere Verzeichnisse mit einem Befehl in Linux

Anonim

Das Kopieren einer Datei über die Linux-Befehlszeile ist einfach. Was ist jedoch, wenn Sie dieselbe Datei an mehrere verschiedene Speicherorte kopieren möchten? Das ist auch einfach und wir zeigen Ihnen, wie Sie dies mit einem einzigen Befehl tun.

Normalerweise würden Sie zum Kopieren einer Datei den Befehl cp, um eine Verknüpfung zur Quelldatei und zum Zielverzeichnis herzustellen:

 cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles / 

Um es in zwei weitere Verzeichnisse zu kopieren, würden viele Leute den Befehl zwei weitere Male mit unterschiedlichen Zielen ausführen:

 cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox / 
 cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE / 

Wir können jedoch dieselbe Aufgabe mit einem Befehl ausführen:

 echo dir1 dir2 dir3 | xargs -n 1 cp file1 

So funktioniert dieser Befehl. Der echo Befehl schreibt normalerweise auf den Bildschirm. In diesem Fall möchten wir jedoch die Ausgabe des echo als Eingabe in den Befehl xargs . Dazu verwenden wir das Pipe-Symbol ( | ), das die Ausgabe von einem Befehl als Eingabe an einen anderen liefert. Der Befehl xargs Befehl cp dreimal aus, wobei jedes Mal der nächste Verzeichnispfad angefügt wird, der vom Befehl echo an das Ende des Befehls cp . Es werden drei Argumente an xargs, die Option -n 1 im Befehl xargs weist jedoch an, dass nur jeweils eines dieser Argumente an den Befehl cp wenn es ausgeführt wird.

Um bei unserem Beispiel von früher zu bleiben, können die drei oben genannten cp Befehle wie folgt zu einem Befehl kombiniert werden:

 echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt 

Wenn die zu kopierende Datei in einem der angegebenen Zielverzeichnisse vorhanden ist, wird die Datei in diesem Ziel automatisch ersetzt. Sie werden nicht gefragt, ob Sie die Datei ersetzen möchten. (Wenn Sie mit dem Befehl cp eine Datei an einen einzelnen Speicherort kopieren, können Sie normalerweise die Option -i hinzufügen, um zu fragen, ob Sie eine vorhandene Datei ersetzen möchten. Die Option -i ist jedoch eine interaktive Option cp Befehl (Eingabeaufforderung des Benutzers)) und Sie können keine interaktive Option mit dem Befehl cp wenn Sie sie zusammen mit xargs .)

Zu beachten ist außerdem, dass Sie beim Kopieren einer sehr großen Datei die Option no-clobber ( -n ) zum cp Befehl im obigen Einzelbefehl hinzufügen möchten. Diese Option verhindert automatisch, dass eine Datei in einem Ziel überschrieben wird, wenn sie dort bereits vorhanden ist. Wenn Sie eine sehr große Datei über ein Netzwerk kopieren, ist dies möglicherweise langsam und Sie möchten möglicherweise nicht die zum Kopieren und Ersetzen der Datei erforderlichen Ressourcen verwenden. Der folgende Befehl fügt die Option -n hinzu und kopiert die Datei nicht an ein in den Argumenten aufgeführtes Ziel der Echo-Anweisung, wenn die Datei in diesem Ziel bereits vorhanden ist.

 echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt 

Geben Sie in der Befehlszeile in Linux man echo, man xargs oder man cp ein, um weitere Informationen zu diesen Befehlen zu erhalten.

Tipp Der Redaktion