xargs将一个文件复制到几个文件中

时间:2013-03-20 02:48:54

标签: unix aix xargs

我有一个目录,其中包含一个包含信息的文件(称为masterfile.inc)和几个空文件(称为file1.inc-file20.inc)

我正在尝试制定一个xargs命令,将masterfile.inc的内容复制到所有空文件中。

到目前为止我已经

  

ls -ltr | awk'{print $ 9}'| grep -v masterfile | xargs -I {} cat masterfile.inc> {}

不幸的是,所有这一切都会创建一个名为{}的文件,并将masterfile.inc打印到其中N次。

这里的语法是否缺少某些内容?

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用此命令复制文件20次:

$ tee <masterfile.inc >/dev/null file{1..20}.inc

注意: file{1..20}.inc将扩展为file1, file2, ... , file20


如果你的国际文件名是随机的:

$ shopt -s extglob
$ tee <masterfile.inc >/dev/null $(ls !(masterfile.inc))

注意: $(ls !(masterfile.inc))将扩展到当前目录中除masterfile.inc之外的所有文件(请不要在文件名中使用空格)

答案 1 :(得分:0)

虽然tee技巧非常出色,但您可能会对更容易适应其他情况的解决方案感兴趣。这里使用GNU Parallel:

ls -ltr | awk '{print $9}' | grep -v masterfile | parallel "cat masterfile.inc > {}"

安装GNU Parallel需要花费10秒钟的时间:

wget pi.dk/3 -qO - | sh -x

观看介绍视频以了解详情:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1