Das Kopieren einer Datei mit der Linux-Befehlszeile ist einfach. Was aber, wenn Sie dieselbe Datei an mehrere verschiedene Speicherorte kopieren möchten? Auch das ist ganz einfach, und wir zeigen Ihnen, wie das mit einem Befehl geht.
Normalerweise würden Sie zum Kopieren einer Datei die cp
Befehl, der auf die Quelldatei und das Zielverzeichnis verlinkt:
cp ~/Documents/FileToBeCopied.txt ~/TextFiles/
Um es in zwei weitere Verzeichnisse zu kopieren, würden viele Leute den Befehl einfach noch zweimal mit unterschiedlichen Zielen ausführen:
cp ~/Documents/FileToBeCopied.txt ~/Dropbox/
cp ~/Documents/FileToBeCopied.txt /media/lori/MYUSBDRIVE/

Wir können jedoch die gleiche Aufgabe mit einem Befehl ausführen:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
So funktioniert dieser Befehl. Das echo
Befehl schreibt normalerweise auf den Bildschirm. In diesem Fall möchten wir jedoch die Ausgabe des echo
Befehl als Eingabe für den xargs
Befehl. Dazu verwenden wir das Pipe-Symbol ( |
), die die Ausgabe eines Befehls als Eingabe an einen anderen weiterleitet. Das xargs
Befehl führt die cp
Befehl dreimal, wobei jedes Mal der nächste Verzeichnispfad angehängt wird, der von der echo
Befehl weiter bis zum Ende des cp
Befehl. Es werden drei Argumente übergeben an xargs
, aber die -n 1
Option auf der xargs
Befehl weist es an, nur eines dieser Argumente gleichzeitig an das anzuhängen cp
Befehl jedes Mal, wenn es ausgeführt wird.
Um bei unserem Beispiel von vorhin zu bleiben, die drei sind getrennt cp
Die obigen Befehle können wie folgt zu einem Befehl kombiniert werden:
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp ~/Documents/FileToBeCopied.txt

Beachten Sie, dass die Datei in diesem Ziel automatisch ersetzt wird, wenn die kopierte Datei in einem der angegebenen Zielverzeichnisse vorhanden ist. Sie werden nicht gefragt, ob Sie die Datei ersetzen möchten. (Normalerweise, wenn Sie die cp
Befehl zum Kopieren einer Datei an einen einzelnen Speicherort, können Sie die -i
Option, um zu fragen, ob Sie eine vorhandene Datei ersetzen möchten. Allerdings ist die -i
Option ist eine interaktive Option (sie bewirkt die cp
Befehl, um den Benutzer um Eingaben zu bitten) und Sie können keine interaktive Option mit dem cp
Befehl, wenn es in Verbindung mit . verwendet wird xargs
.)
Eine andere Sache, die Sie beachten sollten, ist, dass Sie beim Kopieren einer sehr großen Datei möglicherweise das no-clobber ( -n
) Option zum cp
Befehl im einzelnen Befehl oben. Diese Option verhindert automatisch, dass eine Datei in einem Ziel überschrieben wird, wenn sie dort bereits existiert. Wenn Sie eine sehr große Datei über ein Netzwerk kopieren, kann dies langsam sein und Sie möchten möglicherweise vermeiden, die zum Kopieren und Ersetzen der Datei erforderlichen Ressourcen zu verwenden. Der folgende Befehl fügt die -n
Option und kopiert die Datei nicht an ein Ziel, das in den Argumenten der echo-Anweisung aufgeführt ist, wenn die Datei bereits in diesem Ziel vorhanden ist.
echo ~/TextFiles/ ~/Dropbox /media/lori/MYUSBDRIVE | xargs -n 1 cp -n ~/Documents/FileToBeCopied.txt

Art Mann Echo, Mann xargs, oder Mann cp auf der Befehlszeile in Linux, um weitere Informationen zu diesen Befehlen zu erhalten.