xargs 和 cp:find-style“{}+”多重扩展?

xargs 和 cp:find-style“{}+”多重扩展?

我想将一组文件复制到目标文件夹。但不需要cp为每个操作生成一个新的实例。

arg 的格式cp似乎是:

cp src_file1 src_file2 src_file3 dest_dir/

假设我有一个文件,其中逐行列出了源文件名,该如何做?

由于我有大量文件,下面@Scott 的想法将不起作用,因为它将达到最大命令行长度。

我想以某种方式将该文件名传输到该文件cp并让它执行其工作。但 xargs似乎也无济于事,因为它想在命令行末尾添加扩展名。

这能做到吗?

谢谢

答案1

如果filelist包含

apple
orange
banana

这些是要复制到fruity目录的文件的名称,请输入

cp `cat filelist` fruity

/最后你不需要这个。

警告:如果任何文件名包含空格,则此方法将不起作用,例如passion fruit

答案2

模拟print0发现:

cat filelist |perl -p -e 's/\n/\000/' |xargs -0 cp --target-directory dest_dir/

此示例包括xargs -0--target-directory

相关内容