681 Stimmen

Wie verwendet man den Befehl 'cp', um ein bestimmtes Verzeichnis auszuschließen?

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?

24 Stimmen

11 Stimmen

tar -c | tar -x ?

2 Stimmen

@mvds, ich stimme Ihnen zu, tar mit '--exclude' zu verwenden ist eine gute Idee.

34voto

Sie ist relativ zum Quellverzeichnis.
Dies schließt das Verzeichnis source/.git nicht kopiert werden.

rsync -r --exclude '.git' source target

19voto

Zombo Punkte 1

Ausweitung der mvds's Kommentar , das funktioniert bei mir

cd dotfiles
tar -c --exclude .git --exclude README . | tar -x -C ~/dotfiles2

14voto

LeOn - Han Li Punkte 8102

rsync ist in der Tat ziemlich knifflig. Man muss mehrere Tests durchführen, damit es funktioniert.

Angenommen, Sie möchten Folgendes kopieren /var/www/html a /var/www/dev aber müssen ausschließen /var/www/html/site/video/ Verzeichnis, vielleicht wegen seiner Größe. Der Befehl würde lauten:

rsync -av --exclude 'sites/video' /var/www/html/ /var/www/dev

Einige caveat :

  1. Der letzte Schrägstrich / in der Quelle benötigt wird, da sonst auch das Quellverzeichnis und nicht dessen Inhalt kopiert wird und zu /var/www/dev/html/xxxx was vielleicht nicht das ist, was Sie wollen.

  2. Die --exclude Pfad ist relativ direkt an die Quelle. Selbst wenn Sie den vollständigen absoluten Pfad angeben, wird es nicht funktionieren.

  3. -v steht für ausführlich, -a ist für den Archivierungsmodus, d.h. Sie wollen Rekursion und wollen fast alles bewahren.

13voto

sudo work Punkte 748
cp -rv `ls -A | grep -vE "dirToExclude|targetDir"` targetDir

Bearbeiten: Ich habe vergessen, auch den Zielpfad auszuschließen (sonst würde es rekursiv kopieren).

10voto

dzon Punkte 99

Rsync

rsync -r --verbose --exclude 'exclude_pattern' ./* /to/where/

und versuchen Sie es zunächst mit der Option -n, um zu sehen, was kopiert werden soll

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X