GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kopieren Sie eine Datei in mehrere Verzeichnisse von der Befehlszeile unter Linux

In dieser kurzen Anleitung besprechen wir, wie Sie eine Datei von der Befehlszeile aus mit find in mehrere Verzeichnisse kopieren , cp , echo , 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 Sie mit der rechten Maustaste auf die Datei klicken und Copy auswählen Option aus dem Kontextmenü und fügen Sie sie in das Zielverzeichnis/den Zielordner ein.

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.

Wichtiger Warnhinweis:

Bitte beachten Sie, dass die folgenden Befehle keine Bestätigung erfordern. Wenn im Zielverzeichnis eine Datei mit demselben Namen vorhanden ist, wird sie automatisch ersetzt.

Wenn Sie neu bei Linux sind, empfehle ich Ihnen, die Befehle auf allen Testmaschinen zu testen, bevor Sie sie in der Produktion verwenden. So verhindern Sie unnötigen Datenverlust.

Kopieren Sie eine Datei von der Befehlszeile unter Linux in mehrere Verzeichnisse

Ich habe eine Textdatei namens ostechnix.txt in meinem Home-Verzeichnis, und ich wollte es in zwei verschiedene Verzeichnisse namens Downloads kopieren und Documents auf einen Schlag.

Lassen Sie uns zunächst sehen, wie Sie die Datei mit find in mehrere verschiedene Verzeichnisse kopieren und cp Befehle.

Methode 1:Verwendung von find- und cp-Befehlen

Mit find können wir eine einzelne Datei gleichzeitig in mehrere Verzeichnisse kopieren und cp Befehle.

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 namens ostechnix.txt zu kopieren zu ~/Downloads und ~/Documents Verzeichnisse mit find und cp Befehl, führe aus:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;

Der obige Befehl kopiert die Datei ostechnix.txt im aktuellen Verzeichnis nach ~/Downloads und ~/Documents Verzeichnisse.

Wenn Sie '-maxdepth 0' nicht angeben Option, die ostechnix.txt Datei wird nach  ~/Downloads kopiert , ~/Documents Verzeichnisse und auch in deren Unterverzeichnisse. Vergessen Sie also nicht, es anzugeben.

Wie ich zuvor gewarnt habe, wenn bereits eine Datei mit demselben Namen vorhanden ist (z. B. ostechnix.txt ) in einem der Zielverzeichnisse, überschreibt der obige Befehl einfach die vorhandene Datei ohne Bestätigung.

Wenn Sie die vorhandene Datei nicht überschreiben möchten, können Sie -n verwenden Flag mit cp Befehl wie unten:

$ 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:Echo-, xargs- und cp-Befehle verwenden

Die andere Möglichkeit, Dateien an mehrere Speicherorte zu kopieren, ist die Verwendung von echo , xargs und cp Befehle.

Wie Sie bereits wissen, ist der cp Befehl wird verwendet, um die Dateien und Verzeichnisse zu kopieren, und xargs Befehl wird verwendet, um Befehlszeilen aus der Standardeingabe zu erstellen und auszuführen.

Um eine Datei mit echo in mehrere Verzeichnisse zu kopieren , xargs und cp Befehle, führen Sie aus:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt

Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, wie er funktioniert.

Im Allgemeinen das echo Der Befehl gibt die angegebene Zeichenfolge oder den angegebenen Text auf der Standardausgabe aus. Aber in diesem Fall leiten wir die Ausgabe von echo weiter Befehl an xargs . Hier, echo Der Befehl sendet den Verzeichnispfad an xargs als Eingabe.

xargs Befehl führt den cp aus Befehl zweimal und hängt den Pfad jedes Verzeichnisses an das Ende von cp an Befehl.

Die xargs Befehle erhält zwei Argumente (d. h. Verzeichnispfad) von echo Befehl. Das -n 1 Option auf xargs Befehl teilt dem xargs mit nur eines dieser Argumente auf einmal anhängen.

Auch hier ersetzt der obige Befehl die Zieldatei, sofern sie bereits vorhanden ist. Wenn Sie die Zieldatei nicht ersetzen möchten, fügen Sie -n hinzu Flag im Befehl:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt

Methode 3 - Verwendung des tee-Befehls

tee ist ein Unix- und Linux-Dienstprogramm, das verwendet wird, um aus der Standardeingabe zu lesen und in die Standardausgabe und Dateien zu schreiben.

Lassen Sie uns nun die ostechnix.txt kopieren Datei in zwei verschiedene Verzeichnisse namens /home/sk/Downloads und /home/sk/Documents .

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 ostechnix.txt Datei aus dem Home-Verzeichnis nach ~/Downloads und ~/Documents Verzeichnis.

Bitte beachten Sie das tee Der Befehl schreibt die Eingabe auch in die Standardausgabe. Wenn Sie kein tee möchten Um dies zu tun, leiten Sie einfach die Standardausgabe nach /dev/null um wie unten gezeigt.

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

Nochmals warne ich Sie. Wenn bereits eine Datei mit demselben Namen vorhanden ist (z. B. ostechnix.txt ) in den Zielen, überschreibt der obige Befehl die vorhandene Datei.

Einzelheiten finden Sie auf den Manaul-Seiten der obigen Befehle:

$ man cp
$ man find
$ man xargs
$ man echo
$ man tee

Schlussfolgerung

So kopieren wir eine Datei von der Befehlszeile in Linux in mehrere Verzeichnisse gleichzeitig. Es könnte 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 Zielort keine Datei mit demselben Namen vorhanden ist.

Verwandte Lektüre:

  • So finden und kopieren Sie unter Linux bestimmte Dateitypen von einem Verzeichnis in ein anderes
  • Kopieren Sie bestimmte Dateitypen, während Sie die Verzeichnisstruktur in Linux beibehalten
  • Dateien kopieren und gleichzeitig Zielverzeichnisse erstellen
  • So kopieren Sie Dateien und ändern gleichzeitig den Besitz und die Berechtigungen
  • So behalten Sie Eigentums- und Dateiberechtigungen beim Kopieren von Dateien oder Verzeichnissen bei
  • Teilweise übertragene Dateien über SSH mit Rsync fortsetzen
  • So übertragen Sie schnell große Dateien über das Netzwerk unter Linux und Unix
  • Erweitertes Kopieren – Fortschrittsbalken zu cp- und mv-Befehlen in Linux hinzufügen
  • Dateiinhalte in die Zwischenablage kopieren, ohne sie anzuzeigen

Linux
  1. So löschen Sie Dateien und Verzeichnisse in Linux über die Befehlszeile

  2. Kopieren Sie Dateien und Verzeichnisse unter Linux

  3. Durchsuchen Sie Torrents von der Befehlszeile in Linux

  4. Löschen bestimmter Zeilen aus einer Datei in der Linux-Befehlszeile

  5. So kopieren Sie eine Datei mit dem gnu cp-Befehl in mehrere Verzeichnisse

So extrahieren oder entpacken Sie tar.gz-Dateien von der Linux-Befehlszeile

So kopieren Sie eine Datei in mehrere Verzeichnisse unter Linux

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

Cp-Befehl in Linux (Dateien kopieren)

Diff-Befehl in Linux mit Beispielen

So kopieren Sie eine Datei mit einem Befehl in mehrere Verzeichnisse unter Linux