在我的下载中,大约有 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
相对于p
ath的目录~/Downloads
。该输出通过管道传输到 的第二次调用mtree
,该U
调用更新 中的相对目录路径~/newDir
。更具体地说,在这种情况下,“更新”意味着创建任何丢失的条目。由于创建的规范~/Downloads
仅包含目录,因此仅创建目录结构。
答案3
rsync
很棒mtree
!不幸的是,它们并不总是可用。一种更便携的方法是这样的:
(cd ~/Downloads && find . -mindepth 1 -type d -print0) | (cd target_dir; xargs -0 mkdir -p)