![将一个文件复制到多个具有不同名称的其他文件上](https://linux22.com/image/106986/%E5%B0%86%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6%E5%88%B0%E5%A4%9A%E4%B8%AA%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E5%90%8D%E7%A7%B0%E7%9A%84%E5%85%B6%E4%BB%96%E6%96%87%E4%BB%B6%E4%B8%8A.png)
我有一个文件(我们称之为文件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