xargsとライン別パイプ

xargsとライン別パイプ

a.txtb.txtおよび3つのファイルがあります。 、単純なテキストを含む3c.txtつのファイルを作成したいと思います。a.testb.testc.testabracadabra

基本的には、ポイントは.test各ファイルのファイルを作成し、.txtテキストで埋めることです。xargsそれでこれをやろうとしています。

anlx2626> ls
a.txt  b.txt  c.txt

anlx2626> ls *.txt | awk -F'.txt' '{print $1}' | xargs -I {} echo "abracadabra" > {}.test

anlx2626> ls *.test
ls: No match.

{}ライン別配管にプレースホルダを使用することが期待どおりに機能しない理由を指摘できる人はいますか?

ベストアンサー1

このコードでは:

xargs -I {} echo "abracadabra" > {}.test

xargsはリダイレクト演算子をまったく表示できません>。これはシェルによって解釈され、.xargsというファイルを生成します {}.test

xargsを使用して要求された操作を実行する1つの方法は、shにリダイレクト演算子を解釈させることです。

xargs sh -c 'for i do echo abracadrabra > "$i"; done' sh

しかし、xargsをまったく使用しない方が良いでしょう。他の答えは方法を説明します。

おすすめ記事