Website-Suche

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

Verwandte Artikel