Ich möchte alle Dateien in einem Verzeichnis mit Ausnahme einiger Dateien in einem bestimmten Unterverzeichnis kopieren. Ich habe festgestellt, dass cp
Befehl hatte nicht die --exclude
Option. Wie kann ich dies also erreichen?
Antworten
Zu viele Anzeigen?Ich nehme an, Sie verwenden Bash oder Dash. Würde das funktionieren?
shopt -s extglob # sets extended pattern matching options in the bash shell
cp $(ls -laR !(subdir/file1|file2|subdir2/file3)) destination
Führen Sie ein ls aus, das die Dateien ausschließt, die Sie nicht haben wollen, und verwenden Sie diese als erstes Argument für cp
Dies ist eine Abwandlung der Antwort von Linus Kleen. Seine Antwort hat bei mir nicht funktioniert, weil dem Dateipfad ein . vorangestellt wurde, was cp nicht mag (der Pfad sähe dann aus wie Quelle/.Ziel/Datei).
Dieser Befehl hat bei mir funktioniert:
find . -type f -not -path '*/exlude-path/*' -exec cp --parents '{}' '/destination/' \;
Mit dem Befehl --parents bleibt die Verzeichnisstruktur erhalten.
24 Stimmen
rsync?
11 Stimmen
tar -c | tar -x
?2 Stimmen
@mvds, ich stimme Ihnen zu, tar mit '--exclude' zu verwenden ist eine gute Idee.
4 Stimmen
Mögliches Duplikat von Ordner rekursiv kopieren, einige Ordner ausschließen