從現有的檔案樹建立新的空目錄樹

從現有的檔案樹建立新的空目錄樹

我有一個包含大量文件的大型目錄樹。

我想在新位置重新建立目錄結構,但只是目錄,而不是檔案。

我已經檢查了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/'{}' \;

(其變體可用於權限鏡像)

相關內容