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

Kopieren Sie bestimmte Dateitypen, während Sie die Verzeichnisstruktur in Linux beibehalten

Vor einiger Zeit haben wir gelernt, wie man bestimmte Dateitypen von einem Verzeichnis in ein anderes kopiert unter Linux. Heute werden wir dasselbe tun, aber auch die Verzeichnisstruktur beibehalten. Dieses kurze Tutorial erklärt, wie Sie bestimmte Dateitypen kopieren und dabei die Verzeichnisstruktur in Linux beibehalten. Hier habe ich zwei verschiedene Möglichkeiten angegeben, dies zu tun. Wählen Sie einfach eine aus, die für Sie funktioniert.

Kopieren Sie bestimmte Dateitypen, während Sie die Verzeichnisstruktur in Linux beibehalten

Stellen Sie sich dieses Szenario vor.

Ich habe ein Verzeichnis namens "Linux" mit unterschiedlichen Dateitypen, die in verschiedenen Unterverzeichnissen gespeichert sind. Sehen Sie sich die folgende Verzeichnisstruktur an:

$ tree Linux/
Linux/
├── dir1
│   ├── English
│   │   └── Kina - Can We Kiss Forever.mp3
│   ├── Instrumental
│   │   └── Chill Study Beats.mp3
│   └── Tamil
│       ├── Kannan Vanthu.mp3
│       └── yarenna.mp3
├── dir2
│   ├── file.docx
│   └── Raja Raja Chozan Naan.mp3
├── dir3
│   ├── Bamboo Flute - Meditation - Healing - Sleep - Zen.mp3
│   └── pic.jpg
└── dir4
    ├── Aaruyirae.mp3
    └── video.mp4

7 directories, 10 files

Verzeichnisinhalte mit dem Baumbefehl auflisten

Wie Sie in der obigen Verzeichnisstruktur sehen, ist die Linux Verzeichnis hat vier Unterverzeichnisse, nämlich dir1 , dir2 , dir3 und dir4 . Die mp3 Dateien sind über alle vier Unterverzeichnisse verstreut. Jetzt möchte ich alle mp3 kopieren Dateien in ein anderes Verzeichnis namens "ostechnix" und ich möchte auch die gleiche Verzeichnisstruktur im Zielverzeichnis beibehalten.

Zuerst werden wir sehen, wie man dies mit dem Befehl "find" macht.

Methode 1 - Verwenden der Befehle "find" und "cp" oder "cpio"

Wechseln Sie in das Quellverzeichnis:

$ cd Linux/

Und kopieren Sie alle MP3-Dateitypen mit dem Befehl „find“:

$ find . -name '*.mp3' -exec cp --parents \{\} ~/ostechnix \;

Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, was jede Option bewirkt.

  • finden – Befehl zum Suchen von Dateien und Ordnern in Unix-ähnlichen Systemen.
  • der Punkt (.) - stellt dar, dass wir den Inhalt aus dem aktuellen Verzeichnis kopieren.
  • -iname ‘*.mp3’ – Suche nach Dateien mit der Erweiterung .mp3.
  • -exec cp – Führen Sie den Befehl „cp“ aus, um Dateien vom Quell- in das Zielverzeichnis zu kopieren.
  • --Eltern - Erstellen Sie bei Bedarf die übergeordneten Zwischenverzeichnisse, um die Struktur der übergeordneten Verzeichnisse beizubehalten.
  • \{\} – wird automatisch durch den Dateinamen der Dateien ersetzt, die mit dem Befehl „Suchen“ gefunden wurden. Und die geschweiften Klammern werden in einigen "find"-Befehlsversionen maskiert, um sie vor der Erweiterung durch die Shell zu schützen. Sie können auch {} verwenden ohne Fluchtzeichen.
  • ~/ostechnix – Zielverzeichnis zum Speichern der passenden Dateien.
  • \; – zeigt an, dass die auszuführenden Befehle nun vollständig sind, und den Befehl beim nächsten Spiel erneut auszuführen.

Dieser Befehl findet und kopiert alle Dateien vom Typ mp3 aus dem Verzeichnis ~/Linux in das Verzeichnis ~/ostechnix. Außerdem behält es die gleiche Verzeichnisstruktur im Zielverzeichnis bei.

Sie können es mit dem Befehl "tree" an beiden Stellen wie unten überprüfen.

Verzeichnisinhalte mit dem Tree-Befehl in Linux auflisten

Wie Sie in der obigen Ausgabe sehen, enthält das Zielverzeichnis nur die MP3-Dateien und seine Verzeichnisstruktur ist dieselbe wie das Quellverzeichnis.

Wenn Sie dies von einem anderen Ort aus tun, geben Sie den vollständigen Pfad des Quellverzeichnisses wie unten angegeben an.

$ find ~/Linux -name '*.mp3' -exec cp --parents \{\} ~/ostechnix \;

Dieser Befehl findet alle Dateien in Linux/ Speicherort und kopieren Sie sie nach ostechnix/~/Linux/ .

Kopieren Sie bestimmte Dateitypen, während Sie die Verzeichnisstruktur in Linux beibehalten

Wenn --Eltern Option nicht funktioniert, können Sie den Befehl find mit cpio kombinieren Befehl zum Kopieren von Dateien unter Beibehaltung der Verzeichnisstruktur.

$ find . -name '*.mp3' | cpio -pdm  ~/ostechnix

Hier,

  • cpio - Befehl zum Kopieren von Dateien in und aus Archiven.
  • -p - Eine Liste mit Dateinamen aus der Standardeingabe lesen und in das angegebene Verzeichnis kopieren.
  • -d - Erstellen Sie bei Bedarf Verzeichnisse.
  • -m - Dateiänderungszeit beibehalten.

Weitere Einzelheiten finden Sie in den Manpages.

$ man find
$ man cp
$ man cpio

Empfohlene Lektüre:

  • So organisieren Sie automatisch ähnliche Dateitypen in bestimmten Ordnern

Methode 2 – Rsync verwenden

Rsync ist ein leistungsstarkes Tool, das zu/von lokalen und entfernten Systemen verwendet wird. Um bestimmte Dateitypen von einem Verzeichnis in ein anderes zu kopieren und dabei die übergeordnete Verzeichnisstruktur beizubehalten, führen Sie Folgendes aus:

$ rsync -a -m --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix

Oder,

$ rsync -a --prune-empty-dirs --include '*/' --include '*.mp3' --exclude '*' ~/Linux/ ~/ostechnix

Hier,

  • rsync - entferntes (und lokales) Werkzeug zum Kopieren von Dateien.
  • -a - Archivmodus, um fast alles zu bewahren (einschließlich symbolischer Links, Änderungsdaten, Dateiberechtigungen, Eigentümer usw.)
  • -m, --prune-empty-dirs - Löschen Sie leere Verzeichnisse aus dem Quellbaum. Wenn Sie leere Verzeichnisse einschließen möchten, entfernen Sie einfach diese Option aus dem obigen Befehl.
  • --include="*/" --include="*.mp3" --exclude="*" - Um nur bestimmte Dateien einzuschließen, müssen Sie zuerst diese bestimmten Dateien einschließen und dann alle anderen Dateien ausschließen. In unserem Fall haben wir *.mp3-Dateien eingeschlossen und alles andere ausgeschlossen.
  • ~/Linux - Quellverzeichnis.
  • ~/ostechnix - Zielverzeichnis.

Beispielausgabe:

Kopieren Sie bestimmte Dateitypen unter Beibehaltung der Verzeichnisstruktur mit Rsync in Linux

Weitere Einzelheiten finden Sie in den Manpages.

$ man rsync

Hoffe das hilft.


Linux
  1. Linux – Wie überprüft man die Verzeichnisstrukturinformationen einer Unix/Linux-Datei?

  2. So kopieren Sie ein Verzeichnis in der Linux-Befehlszeile [Anfängertipp]

  3. Linux-cp-Befehl

  4. 6 mv-Befehlsbeispiele zum Verschieben oder Umbenennen von Linux-Dateien und -Verzeichnissen

  5. Linux-Befehl zum Leeren aller Dateien eines Verzeichnisses

Cp-Befehl in Linux (Dateien kopieren)

Du-Befehl unter Linux

mv-Befehl unter Linux

So zeigen Sie die Verzeichnisbaumstruktur in Linux an

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

So tarieren Sie bestimmte Dateitypen (Erweiterungen) in einem Verzeichnis