我希望能够使用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