如何复制目录中的所有文件夹和子文件夹,而不将该目录中的文件复制到系统中的另一个文件夹

如何复制目录中的所有文件夹和子文件夹,而不将该目录中的文件复制到系统中的另一个文件夹

在我的下载中,大约有 500 个文件夹。在这 500 个文件夹中的大部分中,我还有其他文件夹。我只想复制此下载目录中的文件夹。这包括文件夹内的文件夹。

最终的目标是拥有一个包含大约 500 个文件夹和近 500 个子文件夹且其中没有单个文件的新目录。

能做到吗?我准备测试一下。

答案1

你想要的是所谓的复制目录结构,尝试rsync

rsync -av --include='*/' --exclude='*' ~/Downloads ~/dls/

或者

rsync -av -f"+ */" -f"- *" ~/Downloads ~/dls/

答案2

mtree是一个很好的工具:

$ mkdir ~/newDir
$ mtree -cdp ~/Downloads | mtree -Up ~/newDir

第一次调用会mtree c创建一个规范,仅引用d相对于path的目录~/Downloads。该输出通过管道传输到 的第二次调用mtree,该U调用更新 中的相对目录路径~/newDir。更具体地说,在这种情况下,“更新”意味着创建任何丢失的条目。由于创建的规范~/Downloads仅包含目录,因此仅创建目录结构。

答案3

rsync很棒mtree!不幸的是,它们并不总是可用。一种更便携的方法是这样的:

(cd ~/Downloads && find . -mindepth 1 -type d -print0) | (cd target_dir; xargs -0 mkdir -p)

相关内容