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


17

我有以下树

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

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

C
|-- e

您将如何使用unix,rsync等执行此操作?

Answers:


29

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


1

有多种解决此问题的方法(来自此网页):

此选项将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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.