
我有一個包含大量文件的大型目錄樹。
我想在新位置重新建立目錄結構,但只是目錄,而不是檔案。
我已經檢查了cp
的手冊頁,但沒有看到有幫助的論點。
答案1
rsync -av -f"+ */" -f"- *" /.../SOURCE /.../DESTINATION
答案2
find . -type d -exec mkdir -p ~/to/{} \;
摘自@whitequark對此問題的回答:在 Mac OS X 上複製目錄結構而不複製文件
答案3
另一種方法是使用tree
非常方便的方法,並根據其強大的選項來導航目錄樹。有僅目錄的選項,排除空目錄,排除帶有模式的名稱,僅包含帶有模式的名稱等。man tree
優勢:您可以編輯或查看列表,或者如果您執行大量腳本編寫並經常創建一批空目錄
方法:使用 建立目錄列表tree
,使用此列表作為參數輸入mkdir
tree -dfi --noreport > some_dir_file.txt
-dfi
僅列出目錄,列印每個名稱的完整路徑,使樹不列印縮排線,
--noreport
省略在樹列表末尾列印文件和目錄報告,只是為了使輸出文件不包含任何絨毛
然後前往您想要空目錄的目的地並執行
xargs mkdir < some_dir_file.txt
答案4
發現這已經滿足了類似的需求。使用足夠新的 rsync 版本,這是您最好的選擇。
如果您沒有最新版本的 rsync,那麼這可以解決問題:
find path/to/source -type -d -exec mkdir path/to/dest/'{}' \; -exec chown --reference='{}' path/to/dest/'{}' \; -exec chmod --reference='{}' path/to/dest/'{}' \;
(其變體可用於權限鏡像)