パイプの結果が次のコマンドの最後のパラメータではない場合の対処

パイプの結果が次のコマンドの最後のパラメータではない場合の対処

以下の例は、私がやりたいことを示しています。つまり、前のパイプラインの結果を取得し、次のコマンドの途中(私が作成したところ$RESULT_FROM_FIND_COMMAND)に入れることです。

$ find . -name "*0.01*txt" | cp $RESULT_FROM_FIND_COMMAND $(awk '{{split($1,a,"/")} {print a[3]"_"a[4]"_"a[5]}}')

これを達成するには、どの変数またはコマンドを使用する必要がありますか?

重要な場合はbashを使用しています。

市。 awkはfindの結果を入力として受け入れる必要があることに注意してください。

ベストアンサー1

この場合は、シェルを使用して繰り返します。

find . -name "*0.01*txt" | while IFS= read -r filename; do
    newname=$(awk '{split($1,a,"/"), print a[3]"_"a[4]"_"a[5]}' <<< "$filename")"
    cp "$filename" "$newname"
done

通常、xargsが役立ちます。

find .... -print0 | xargs -o -I FILE someCommand arg1 FILE arg3 FILE

おすすめ記事