2012-07-19 69 views
59

我有兩個目錄,一個是空的。沒有隱藏文件的cp -r

第一個目錄有許多帶有隱藏文件的子目錄。當我從第一個目錄到第二個目錄的內容時,隱藏文件也被複制。任何解決方案來逃脫他們?

+0

這是可行的,但刪除它們在t之後他的副本可能更簡單 – 2012-07-19 08:50:53

+4

是的,但將隱藏文件應用到其他位置對我來說是一種安全隱患。 – Rahul 2012-07-19 09:26:38

回答

99

您可以使用rsync:

rsync -av --exclude=".*" src dest 
+0

與cp相比的任何開銷? – Rahul 2012-07-19 09:25:44

+1

@Rahul我沒有想到以它爲基準,但我認爲你不應該擔心它 – 2012-07-19 10:44:50

+1

它很酷!謝啦! 僅供參考,當文件大小很大時,rsync會很好,但在較小文件的情況下,等於cp。 – Rahul 2012-07-19 11:06:37

12

你可以做

cp -r SRC_DIR/* DEST_DIR 

排除在SRC_DIR級別的所有.files和.dirs,但仍然會在子目錄下一級複製任何隱藏的文件。

+1

這就是問題所在.. :) – Rahul 2012-07-19 11:07:41

+6

但是它適用於GIT-Repos,如果你不想複製整個GIT-Index在.git/... – 2015-08-14 10:02:50

1

rsync的具有 「-C」 選項

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

例子:

rsync -vazC dir1 dir2 
+0

嗯,它從子目錄中複製隱藏文件... – Rahul 2012-07-19 09:28:45

+0

你說得對。我試過** mkdir -p dir1/subdir;觸摸dir1/subdir/.cvs; rsync -avzC dir1 dir2 ** – slitvinov 2012-07-19 09:42:08

+0

rsync -av --exclude =「。*」src dest效果很好。請參考eugene上面的答案。不管怎麼說,還是要謝謝你! :) – Rahul 2012-07-19 11:07:15