我有一个包含大量文件的大型目录树。
我想在新位置重新创建目录结构,但仅限于目录,而不是文件。
我已经检查了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/'{}' \;
(此变体可用于权限镜像)