与管道接触的使用

与管道接触的使用

我希望能够使用touch管道命令来根据命令的输出创建多个文件。

例如:

grep "hello(.*)" file.txt | touch

但这不起作用!我怎样才能实现这个目标?

答案1

touch命令本身无法读取stdin,但您可以借助以下命令来执行此操作xargs

grep "hello(.*)" file.txt | xargs -I file_name touch file_name

编辑:

如果输入xargs包含以反斜杠 ( \) 结尾的行,则会创建名称中包含换行符的文件。该问题没有具体说明这种情况下的预期结果是什么。

示例:输入

foo\
bar

将生成一个名为foo\nbar.-d '\n'向命令添加选项xargs会将行为更改为创建两个文件foo\bar.

答案2

尝试这个,

# ~ grep "hello(.*)" file.txt | xargs touch

更多参考:man xargs

相关内容