1

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

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

到目前为止我有

ls -ltr | awk '{打印 $9}' | grep -v 主文件 | xargs -I {} cat masterfile.inc > {}

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

这里的语法有什么我遗漏的吗?

提前致谢

4

2 回答 2

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(请不要在文件名中使用空格)

于 2013-03-20T02:54:17.313 回答
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

于 2013-04-19T22:30:08.180 回答