cp -r ohne versteckte Dateien

87

Ich habe zwei Verzeichnisse und eines ist leer.

Das erste Verzeichnis enthält viele Unterverzeichnisse mit versteckten Dateien. Wenn ich cp -rvom ersten zum zweiten Verzeichnis übergehe, werden auch die versteckten Dateien kopiert. Irgendwelche Lösungen, um ihnen zu entkommen?

Rahul
quelle
es ist machbar, aber sie nach der Kopie zu entfernen könnte einfacher sein
Karoly Horvath
5
Ja, aber das Kopieren der versteckten Dateien an andere Speicherorte ist in meinem Fall ein Sicherheitsrisiko.
Rahul

Antworten:

127

Sie können rsync verwenden:

rsync -av --exclude=".*" src dest
Eugene Yarmash
quelle
1
Irgendwelche Gemeinkosten im Vergleich zu cp?
Rahul
2
@ Rahul Es ist mir nicht in den Sinn gekommen, es zu bewerten, aber ich denke, Sie sollten sich darüber keine Sorgen machen
Eugene Yarmash
3
Es funktioniert cool! Danke, Mann! Nur zur Information, rsync wäre großartig, wenn die Dateigröße groß ist, aber bei kleineren Dateien gleich cp.
Rahul
25

Du kannst tun

cp -r SRC_DIR/* DEST_DIR

Um alle .files und .dirs in der SRC_DIR-Ebene auszuschließen, werden jedoch alle versteckten Dateien in die nächste Ebene der Unterverzeichnisse kopiert.

Tuxdude
quelle
6
Das ist genau das Problem .. :)
Rahul
9
Aber es funktioniert für GIT-Repos, wenn Sie nicht den gesamten GIT-Index in .git / ... kopieren möchten
Sedat Kilinc
Ich würde diese Antwort geben, weil dies die Lösung ist, nach der ich gesucht habe. Ich möchte nicht alle Unsichtbaren im Baum ausschließen, nur die Unsichtbaren auf der Wurzelebene!
1008com
Eine andere Variante cp SOURCE/[!.]* TARGET.
Carel
4

rsync hat die Option "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Beispiel:

rsync -vazC  dir1 dir2
Slitvinov
quelle
Du hast recht. Ich habe versucht, mkdir -p dir1 / subdir; Berühren Sie dir1 / subdir / .cvs. rsync -avzC dir1 dir2
slitvinov
rsync -av --exclude = ". *" src dest funktioniert hervorragend. Siehe die Antwort oben von Eugene. Danke trotzdem! :)
Rahul