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

So schließen Sie bestimmte Dateierweiterungen beim rekursiven Kopieren von Dateien aus

Wie Sie vielleicht bereits wissen, ‘cp’ ist das Kommandozeilenprogramm in Linux zum Kopieren von Dateien und Verzeichnissen. Die einfache und häufigste Verwendung von ‚cp‘ lautet wie folgt:

$ cp file1 file2 file3... fileN target_folder/

Beachten Sie, dass der obige Befehl sowohl für Dateien als auch für ’empty’ funktioniert Ordner. Es funktioniert nicht bei Ordnern mit Inhalt, entweder Dateien oder Unterordnern.

Um solche Ordner zu kopieren, können wir den '-r' angeben (rekursives) Flag.

$ cp -r folder1/ folder2/ file1 file2 target_folder/

Rekursives Kopieren impliziert, dass die gesamte Ordnerstruktur unterhalb eines Ordners, d. h. Unterordner und darin enthaltene Dateien, Unterordner innerhalb der Unterordner und die darin enthaltenen Dateien usw. kopiert werden.

Dadurch werden alle Dateien kopiert, und es gibt keine Möglichkeit innerhalb des 'cp' Befehl, um einige der Dateien basierend auf bestimmten Parametern auszuschließen. Beispielsweise möchten Benutzer möglicherweise alle Dateien rekursiv kopieren, mit Ausnahme von MP3-(Audio-)Dateien in den Unterordnern ganz unten in der Hierarchie.

Alle Dateien außer bestimmten Dateierweiterungen finden

Um dies zu erreichen, verwenden wir den find-Befehl, ein Befehlstool, das einfach zum Suchen nach Dateien und Ordnern in Linux verwendet wird, basierend auf den Parametern der Datei oder des Ordners:Dateiname, Erweiterung, Größe usw.

Ebenso gibt es Möglichkeiten, Dateien zu suchen, indem Sie angeben, welche Dateien im Suchbefehl ausgeschlossen werden sollen . Die Syntax zum Auffinden von Dateien einer bestimmten Erweiterung mit find ist:

$ find <folder_to_search> -name '*.<extension>'

Um beispielsweise alle MP3-Dateien rekursiv im aktuellen Ordner zu finden:

$ find . -name "*.mp3"

Um nun alle Dateien in den Ordnern und Unterordnern außer MP3-Dateien zu finden, verwenden Sie die „Verneinung“ Operator von find :

$ find . ! -name "*.mp3"

Wir können sehen, dass jetzt alles außer den MP3-Dateien angezeigt wird. Wir wollen die Dateien jedoch nur anzeigen, da diese Ausgabe später in ‘cp’ eingegeben wird . Im Moment zeigt es sowohl Dateien als auch Ordner an (z. B. ‘temp1/’ ), was zu wiederholten Kopien derselben Dateien führt.

Um die Ordner aus der Ausgabe zu entfernen, verwenden Sie einfach das Argument '-type f' . Hier 'f' steht für eine Datei.

$ find . ! -name '*.mp3' -type f

Wir haben also jetzt nur noch die rekursiv erhaltenen Dateien im Ordner ‘test’ . Jetzt können wir damit fortfahren, diese Ausgabe an den Befehl „cp“ weiterzuleiten .

Ausschließen bestimmter Dateierweiterungen beim rekursiven Kopieren von Dateien

Dazu verwenden wir die „xargs“ Befehl, um 'cp' zu machen Betrachten Sie die Ausgabe von ‘find‘ als seine Argumente. Außerdem verwenden wir den '-t' Flag zur Angabe des Zielverzeichnisses, ohne das das Programm die Ausgabe von ‘find‘ berücksichtigt als Zielverzeichnis.

$ find <folder_to_search> ! -name '*.<extension>' -type f | xargs cp -t <target_directory>

Tatsächlicher Befehl.

$ find . ! -name '*.mp3' -type f | xargs cp -t Misc/

Somit werden alle Dateien rekursiv gefunden, außer dem “.mp3” Dateien wurden in den Ordner „Misc“ kopiert .

Schlussfolgerung

In diesem Artikel haben wir gelernt, wie man Dateien unter Linux rekursiv kopiert und dabei Dateien mit einer bestimmten Erweiterung ausschließt. Sehen Sie sich auch an, wie Sie Dateien einer bestimmten Erweiterung rekursiv kopieren.

Wenn Sie Fragen oder Feedback haben, teilen Sie uns dies in den Kommentaren unten mit.


Linux
  1. So finden Sie eine Datei in Linux rekursiv in allen Verzeichnissen

  2. So schließen Sie bestimmte Verzeichnisse vom Kopieren in Linux aus

  3. Wie verwendet man Inotifywait, um ein Verzeichnis für die Erstellung von Dateien einer bestimmten Erweiterung zu überwachen?

  4. Wie man Verzeichnisse rekursiv mit rsync kopiert und dabei bestimmte Dateien ausschließt

  5. Wie kann ich Dateien rekursiv nach Dateierweiterung kopieren und dabei die Verzeichnisstruktur beibehalten?

So entfernen Sie Dateien mit einer bestimmten Erweiterung in Linux

So schließen Sie ein Verzeichnis beim Suchen von Dateien in Linux aus

So kopieren Sie Dateien mit einer bestimmten Dateierweiterung rekursiv

So finden Sie Dateien basierend auf dem Zeitstempel in Linux

So finden Sie Dateien, die eine bestimmte Textzeichenfolge in Linux enthalten

So finden Sie Dateien, die in den letzten 24 Stunden in Linux geändert wurden