我有一个文件(我们称之为文件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(包括zsh
和bash
),您始终可以执行以下操作:
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