我想将大约 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
)。