a.txt
、b.txt
および3つのファイルがあります。 、単純なテキストを含む3c.txt
つのファイルを作成したいと思います。a.test
b.test
c.test
abracadabra
基本的には、ポイントは.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をまったく使用しない方が良いでしょう。他の答えは方法を説明します。