我有一个目录,其中包含一个包含信息的文件(称为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次。
这里的语法是否缺少某些内容?
提前致谢
答案 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