Dateien lassen sich unter Linux mit dem Befehl cp kopieren. cp hat auch einen Schalter für “rekursives” kopieren, leider lässt sich der nicht in allen Lebenslagen verwenden. Das Problem ist wenn man nur bestimmte Dateien kopieren möchte die in Unterverzeichnissen stecken, wie z.B. in einer Musiksammlung. Im Wurzelverzeichnis der Sammlung gibt es keine MP3-Dateien, da sie alle erst nach Künstler und dann noch nach Alben in Unterverzeichnisse einsortiert sind. Möchte man jetzt nur die Songs ohne mögliche Bilder oder Playlisten auf ein Abspielgerät kopieren wird das Kommando cp -ru *.mp3 /MP3-Player mit dem Fehler:
cp: Aufruf von stat für „*.mp3“ nicht möglich: No such file or directory
quittiert.
Abhilfe bringt hier das Programm find. Mit
find . -name "*.mp3" -exec cp -u {} /MP3-Player/{} \;
find ruft bei jeder gefundenen Datei (automatisch in allen Unterverzeichnissen) cp auf und ersetzt die geschweiften Klammern durch die gefundene Datei. Damit die Verzeichnisstruktur auch im Ziel erhalten bleibt, ist auch hier eine geschweifte Klammer nötig, ansonsten würden alle Dateien in das angegebene Verzeichnis kopiert. Für erste Versuche kann der Schalter -exec auch durch -ok ersetzt werden. find fragt dann vor jedem Aufruf nach ob der Befehl ausgeführt werden soll.
Ähnliches gilt auch für den Befehl rm. Mit
find . -name "*.jpg" -exec rm {} \;
lassen sich alle Bilder in den Unterverzeichnissen löschen.






0 Kommentare zu “Dateien kopieren unter Linux”