如何从多个目录复制文件?

如何从多个目录复制文件?

我有多个目录中的一堆文本文件,我想将它们复制到另一个目录中。除了进入每个目录并cp *.txt进入此目录外,我还能做什么?

答案1

如果相关主题中的答案都不是您正在寻找的,您可以考虑使用该find命令,它将从给定的父级向下递归搜索目录。您可以指定exec对找到的每个匹配文件执行的操作 - 在这种情况下,您希望它对cp新的目标目录执行

find /path/to/parent -name '*.txt' -exec cp -t /path/to/newdir {} +

{}被它找到的文件替换,末尾的+使它对它们进行批处理,以免超出cp一个命令可以处理的最大参数数量。newdir必须已经存在。

由于您要将文件从多个地方移动到一个地方,因此某些名称可能不唯一,因此您可能需要注意防止较早的副本被较新的副本覆盖 - 您可以通过添加选项来backup实现

find /path/to/parent -name '*.txt' -exec cp --backup=numbered -t /path/to/newdir {} +

这将为每个重复文件添加一个简单的编号后缀。如果您想在复制文件时查看文件的运行报告,可以向添加-v--verbose标志。cp

相关内容