如何在 Linux 中复制目录树但不复制文件?

如何在 Linux 中复制目录树但不复制文件?

我想将大约 200 个目录和子目录从一个位置复制到另一个位置,但我不想复制这些目录中的数千个文件。我在 Linux 上。

注意:我没有足够的空间来复制所有内容然后删除所有文件。

答案1

刚刚发现这个:

rsync -a -f"+ */" -f"- *" source/ destination/

http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html

答案2

find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ...

答案3

另一种方法是寻找建立目录

find SOURCE -type d -exec mkdir TARGET/{} \;

只需确保 TARGET 已经存在或使用 mkdir 的 -p 选项。

答案4

类似地,使用(GNU)tar:

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

您实际上不需要-print0在 find 命令行上或-0在 rsync 命令行上使用 ,除非您的文件名包含换行符(这是可能的,但可能性很小)。Tar(以及 rsync 和 cpio)逐行读取文件名;使用 NULL 终止符最有用xargs,它通常读取空格分隔的文件名(因此,如果没有 ,则不会处理名称中带有空格的文件/目录-0)。

相关内容