如何从目录复制文件子集,同时保留文件夹结构?

如何从目录复制文件子集,同时保留文件夹结构?

我想将一些文件子集从 dirA 移动到 dirB(假设文件名中带有“blah”的文件),但我希望所有嵌套目录在新位置中都相同。我怎样才能做到这一点?

答案1

rsync过滤规则的魔力:

$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest

有关过滤规则的详细信息,请参阅rsync手册页,但这里是针对此特殊需求的精简版本。

--filter="+ */"意思是“包含目录中的所有内容”

--filter="-! *blah*意思是“排除文件名中不包含 blah 的所有内容”

答案2

如果您需要复制这些文件,cp 即可:

cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB

选项--parents保留子目录 - 它为目标创建完整目录路径。

答案3

这对我有用:

rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/

交换机-e定义rsync传输协议,端口为-p 22。此外,尾部/斜杠对于让程序知道它正在处理目录也很重要。

感谢@pdo 在我工作日中提供的额外时间!

相关内容