Kopieren Sie eine Datei in mehrere Verzeichnisse in der Befehlszeile unter Linux
In dieser kurzen Anleitung besprechen wir, wie Sie eine Datei über die Befehlszeile mit find
, cp
, echo
, in mehrere Verzeichnisse kopieren xargs
- und tee
-Befehle unter Linux.
Neulich wollte ich einige Videos in verschiedene Ordner auf meinem Arch Linux-Desktop kopieren. Wie Sie bereits wissen, können wir dies ganz einfach tun, indem wir mit der rechten Maustaste auf die Datei klicken, im Kontextmenü die Option Kopieren
auswählen und sie in das Zielverzeichnis/den Zielordner einfügen.
Ich würde jedoch gerne wissen, ob es eine andere Möglichkeit gibt, die Datei auf einmal in mehrere Verzeichnisse zu kopieren. Ich dachte, es würde helfen, wenn ich eine einzelne Datei gleichzeitig in mehrere verschiedene Verzeichnisse kopieren möchte. Ich habe ein paar Websuchen durchgeführt und folgende Lösungen gefunden.
Wichtige Warnung:
Bitte beachten Sie, dass die folgenden Befehle keine Bestätigung erfordern. Wenn im Zielverzeichnis eine Datei mit demselben Namen vorhanden ist, wird diese automatisch ersetzt.
Wenn Sie neu bei Linux sind, empfehle ich Ihnen, die Befehle auf Testmaschinen zu testen, bevor Sie sie in der Produktion verwenden. So verhindern Sie unnötigen Datenverlust.
Kopieren Sie eine Datei über die Befehlszeile unter Linux in mehrere Verzeichnisse
Ich habe eine Textdatei namens ostechnix.txt
in meinem Home-Verzeichnis und wollte sie in zwei verschiedene Verzeichnisse namens Downloads
< kopieren und Dokumente
auf einmal.
Sehen wir uns zunächst an, wie man die Datei mit den Befehlen find
und cp
in mehrere verschiedene Verzeichnisse kopiert.
Methode 1: Verwenden der Befehle find und cp
Mit den Befehlen find
und cp
können wir eine einzelne Datei gleichzeitig in mehrere Verzeichnisse kopieren.
Der find
ist ein Unix- und Linux-Befehl zum Suchen nach Dateien in einer Verzeichnishierarchie und der cp-Befehl wird zum Kopieren von Dateien und Verzeichnissen verwendet.
Um eine Datei mit dem Namen ostechnix.txt
in die Verzeichnisse ~/Downloads
und ~/Documents
zu kopieren, verwenden Sie find
und cp
-Befehl, führen Sie Folgendes aus:
find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;
Kopieren Sie eine Datei mit den Befehlen „find“ und „cp“ unter Linux in mehrere verschiedene Verzeichnisse
Der obige Befehl kopiert die Datei ostechnix.txt im aktuellen Verzeichnis in die Verzeichnisse ~/Downloads
und ~/Documents
.
Wenn Sie die Option '-max Depth 0'
nicht angeben, wird die Datei ostechnix.txt
nach ~/Downloads
kopiert , ~/Documents
Verzeichnisse und auch in deren Unterverzeichnisse. Vergessen Sie also nicht, es anzugeben.
Wie ich bereits zuvor gewarnt habe, überschreibt der obige Befehl einfach die vorhandene Datei ohne Bestätigung, wenn in einem der Zielverzeichnisse bereits eine Datei mit demselben Namen (z. B. ostechnix.txt
) vorhanden ist.
Wenn Sie die vorhandene Datei nicht überschreiben möchten, können Sie das Flag -n
mit dem Befehl cp
wie folgt verwenden:
find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;
Jetzt wird die Zieldatei nicht ersetzt, wenn sie bereits an den Zielspeicherorten vorhanden ist.
Methode 2: Verwenden der Befehle echo, xargs und cp
Eine andere Möglichkeit, Dateien an mehrere Speicherorte zu kopieren, ist die Verwendung der Befehle echo
, xargs
und cp
.
Wie Sie bereits wissen, wird der Befehl cp
zum Kopieren der Dateien und Verzeichnisse verwendet, und der Befehl xargs
wird zum Erstellen und Ausführen von Befehlszeilen aus der Standardeingabe verwendet.
Um eine Datei mit den Befehlen echo
, xargs
und cp
in mehrere Verzeichnisse zu kopieren, führen Sie Folgendes aus:
echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt
Kopieren Sie eine Datei mit den Befehlen cp, echo und xargs unter Linux in mehrere Verzeichnisse
Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, wie er funktioniert.
Im Allgemeinen gibt der Befehl echo
die angegebene Zeichenfolge oder den angegebenen Text in der Standardausgabe aus. Aber in diesem Fall leiten wir die Ausgabe des Befehls echo
an xargs
weiter. Hier sendet der Befehl echo
den Verzeichnispfad an xargs
als Eingabe.
Der Befehl xargs
führt den Befehl cp
zweimal aus und hängt den Pfad jedes Verzeichnisses an das Ende des Befehls cp
an.
Die xargs
-Befehle erhalten zwei Argumente (d. h. den Verzeichnispfad) vom echo
-Befehl. Die Option -n 1
im Befehl xargs
weist die xargs
an, jeweils nur eines dieser Argumente anzuhängen.
Auch hier ersetzt der obige Befehl die Zieldatei, sofern diese bereits vorhanden ist. Wenn Sie die Zieldatei nicht ersetzen möchten, fügen Sie das Flag -n
im Befehl hinzu:
echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt
Methode 3 – Verwenden des Tee-Befehls
Tee
ist ein Unix- und Linux-Dienstprogramm, das zum Lesen von Standardeingaben und zum Schreiben in Standardausgaben und -dateien verwendet wird.
Nun kopieren wir die Datei ostechnix.txt in zwei verschiedene Verzeichnisse namens /home/sk/Downloads
und / home/sk/Dokumente
.
Führen Sie dazu einfach den folgenden Befehl im Terminal aus:
tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt
Der obige Befehl kopiert die Datei ostechnix.txt
aus dem Home-Verzeichnis in die Verzeichnisse ~/Downloads
und ~/Documents
.
Bitte beachten Sie, dass der Befehl tee
die Eingabe auch in die Standardausgabe schreibt. Wenn Sie nicht möchten, dass der Befehl tee
dies tut, leiten Sie die Standardausgabe einfach wie unten gezeigt an /dev/null
um.
tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null
Kopieren Sie eine Datei mit dem Befehl „tee“ unter Linux in mehrere verschiedene Verzeichnisse
Ich warne Sie noch einmal. Wenn in den Zielen bereits eine Datei mit demselben Namen (z. B. ostechnix.txt
) vorhanden ist, überschreibt der obige Befehl die vorhandene Datei.
Weitere Informationen finden Sie auf den Handbuchseiten der oben genannten Befehle:
man cp
man find
man xargs
man echo
man tee
Abschluss
So kopieren wir eine Datei über die Befehlszeile unter Linux in mehrere Verzeichnisse gleichzeitig. Es könnte auch andere Möglichkeiten geben, aber ich glaube, dass diese Befehle sehr einfach und leicht zu verwenden sind.
Stellen Sie erneut sicher, dass die Zielpfade korrekt sind und stellen Sie vor allem sicher, dass am Zielspeicherort keine Datei mit demselben Namen vorhanden ist.
Verwandte Lektüre:
- So finden und kopieren Sie bestimmte Dateitypen unter Linux von einem Verzeichnis in ein anderes
- Kopieren Sie bestimmte Dateitypen und behalten Sie dabei die Verzeichnisstruktur in Linux bei
- Dateien kopieren und gleichzeitig Zielverzeichnisse erstellen
- So kopieren Sie Dateien und ändern gleichzeitig den Besitz und die Berechtigungen
- So bleiben Eigentums- und Dateiberechtigungen beim Kopieren von Dateien oder Verzeichnissen erhalten
- Teilweise über SSH übertragene Dateien mit Rsync fortsetzen
- So übertragen Sie große Dateien schnell über das Netzwerk unter Linux und Unix
- Erweitertes Kopieren – Fortschrittsbalken zu cp- und mv-Befehlen unter Linux hinzufügen
- Dateiinhalte in die Zwischenablage kopieren, ohne sie anzuzeigen