xargs -Iコマンドの目的は何ですか?

xargs -Iコマンドの目的は何ですか?

このコマンドの機能を説明できますか?

files=(this_is_filename)
for filename in ${files[@]}; do 
  ls -t1 ../htory/$filename* |
    head -1 |
    xargs -I fname cp -p fname ../htory2/somefile.CSV
done

特に、このコマンド部分は

xargs -I fname cp -p fname ../htory2/somefile.CSV

ベストアンサー1

xargs入力をパラメータに変換します。この-Iオプションは、パラメーターのプレースホルダーとして使用する文字列を指定します。したがって、パイプライン出力が次のような場合

file1
file2

この行は次xargsのように変換されます。

cp -p file1 ../htory2/somefile.CSV
cp -p file2 ../htory2/somefile.CSV

ただし、一意は1行を返すので、代わりに使用すると実際の利点を見ることはhead -1できません。xargs

cp -p "$(ls -t1 ../htory/$filename* | head -1)" ../htory2/somefile.CSV

また、ターゲットファイルは常に同じなので、.txtの最後のファイルで上書きされます${files[@]}

おすすめ記事