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