touch
パイプコマンドを使用して、コマンド出力に基づいて複数のファイルを生成できるようにしたいです。
たとえば、
grep "hello(.*)" file.txt | touch
しかし、動作しません!この目標をどのように達成できますか?
答え1
コマンドtouch
自体は読み取れませんが、stdin
次のコマンドを使用すると読み取ることができますxargs
。
grep "hello(.*)" file.txt | xargs -I file_name touch file_name
編集する:
入力にバックスラッシュ()で終わる行がxargs
含まれている場合、\
名前に改行文字を含むファイルが生成されます。この質問は、この場合に予想される結果が何であるかを指定しません。
例: 入力
foo\
bar
コマンドにオプションを追加すると、2つのファイルを生成するように動作が変更されますfoo\nbar
。-d '\n'
xargs
foo\
bar
答え2
この試み、
# ~ grep "hello(.*)" file.txt | xargs touch
追加参考資料:man xargs