将一个文件复制到多个具有不同名称的其他文件上

将一个文件复制到多个具有不同名称的其他文件上

我有一个文件(我们称之为文件1.xyz)我想将其用作模板来处理。我需要复制内容文件1.xyz以便它们替换其他文件的内容 -文件2.xyz,文件3.xyz,文件4.xyz,文件5.xyz……文件70.xyz同时保留原始文件名。

我尝试过使用:

cp file1.xyz *.xyz

这些文件都在同一目录中,我不想将它们相互附加。

这不起作用,我该如何解决这个问题?

答案1

zsh

f=(file*.xyz)
cat $f[1] > $f[2,-1]

但这会并行写入所有输出文件(就像使用一样tee),这意味着它不能很好地扩展到大量文件。

对于任何类似 Bourne 的 shell(包括zshbash),您始终可以执行以下操作:

set file*.xzy
source=$1; shift
for dest do cp "$source" "$dest"; done

答案2

这是在您的示例中创建文件的一行:

for i in {2..70}; do cp file1.xyz file$i.xyz; done

答案3

最简单的方法是通过 tee 命令

cat file1.xyz | tee *.xyz >/dev/null

答案4

echo file{2..70}.xyz | xargs -n 1 -t cp file1.xyz

相关内容