cp -r bez ukrytych plików

89

Mam dwa katalogi i jeden jest pusty.

Pierwszy katalog zawiera wiele podkatalogów z ukrytymi plikami. Kiedy cp -rzawartość z pierwszego katalogu do drugiego, ukryte pliki również są kopiowane. Jakieś sposoby na ucieczkę?

Rahul
źródło
to wykonalne, ale usunięcie ich po skopiowaniu może być prostsze
Karoly Horvath
6
tak, ale kopiowanie ukrytych plików do innych lokalizacji jest w moim przypadku zagrożeniem bezpieczeństwa.
Rahul,

Odpowiedzi:

127

Możesz użyć rsync:

rsync -av --exclude=".*" src dest
Eugene Yarmash
źródło
1
Jakieś koszty ogólne w porównaniu z cp?
Rahul,
2
@Rahul Nie przyszło mi do głowy, aby porównać to, ale myślę, że nie powinieneś się tym martwić
Eugene Yarmash.
3
Działa świetnie! Dzięki stary! Dla informacji, rsync byłby świetny, gdy rozmiar pliku jest duży, ale równy cp w przypadku mniejszych plików.
Rahul
26

Możesz to zrobić

cp -r SRC_DIR/* DEST_DIR

aby wykluczyć wszystkie .files i .dirs na poziomie SRC_DIR, ale mimo to skopiowałoby wszelkie ukryte pliki do następnego poziomu podkatalogów.

Tuxdude
źródło
6
Właśnie w tym problem .. :)
Rahul,
9
Ale to działa w przypadku GIT-Repos, jeśli nie chcesz skopiować całego indeksu GIT do .git / ...
Sedat Kilinc
1
Dałem odpowiedź, ponieważ jest to rozwiązanie, którego szukałem. Nie chcę wykluczyć wszystkich elementów niewidocznych na drzewie, tylko elementy niewidoczne na poziomie głównym!
l008com
Inny wariant cp SOURCE/[!.]* TARGET.
Carel
4

rsync ma opcję "-C"

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

Przykład:

rsync -vazC  dir1 dir2
slitvinov
źródło
Masz rację. Próbowałem mkdir -p dir1 / subdir; dotknij dir1 / subdir / .cvs; rsync -avzC dir1 dir2
slitvinov
rsync -av --exclude = ". *" src dest działa świetnie. Odnieś się do odpowiedzi powyżej przez Eugene. W każdym razie dzięki! :)
Rahul