从带有文件的现有树创建新的空目录树

jon*_*jon 4 linux shell command-line

我有一个很大的目录树,里面有很多文件。

我想在新位置重新创建目录结构,但只有目录,而不是文件。

我检查了cp的手册页,但没有看到有帮助的论点。

jon*_*jon 5

find . -type d -exec mkdir -p ~/to/{} \;
Run Code Online (Sandbox Code Playgroud)

摘自@whitequark 对此问题的回答:Copy directory structure without copy files, on Mac OS X


Ans*_*ers 5

rsync -av -f"+ */" -f"- *" /.../SOURCE /.../DESTINATION
Run Code Online (Sandbox Code Playgroud)

  • 你可以解释吗? (2认同)
  • 这在“man rsync”中进行了解释(请参阅“包含/排除模式规则”部分)。选项“-f”添加过滤器。`"+ */"` 包括所有目录,下面的 `"- *"` 排除其他所有目录。 (2认同)

小智 5

另一种方法是使用tree非常方便的方法,并根据其强大的选项来导航目录树。有仅目录、排除空目录、排除带有模式的名称、仅包含带有模式的名称等选项。查看man tree

优点:您可以编辑或查看列表,或者如果您执行大量脚本编写并经常创建一批空目录

方法:使用 创建目录列表tree,使用该列表作为参数输入mkdir

tree -dfi --noreport > some_dir_file.txt
Run Code Online (Sandbox Code Playgroud)

-dfi仅列出目录,打印每个名称的完整路径,使树不打印缩进线,

--noreport省略在树列表末尾打印文件和目录报告,只是为了使输出文件不包含任何绒毛

然后转到你想要空目录的目的地并执行

xargs mkdir < some_dir_file.txt
Run Code Online (Sandbox Code Playgroud)