复制没有空目录的目录树?

复制没有空目录的目录树?

我有以下树

# upper letters = directory
# lower letters = files
A
|-- B
|-- C
    |-- D
    |-- e <= file
|-- F
    |-- G

我需要将这棵树复制到另一个目标,递归地忽略所有空目录。因此目标最终看起来像这样:

C
|-- e

如何使用 unix、rsync 等来实现这一点?

答案1

当然几分钟后我发现了一个简单的方法。rsync有一个--prune-empty-dirs选项。

答案2

这个问题有多种解决方案(摘自此网页):

此选项将 mkdir 命令与 find 命令结合使用。此方法还要求您在执行命令时位于源文件夹内。

bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;

使用 find 和 cpio

bash$ find /path/to/source -type d | cpio -pd /path/to/dest/

使用 Rsync

bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest

或者

bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest

相关内容