
以下の例は、私がやりたいことを示しています。つまり、前のパイプラインの結果を取得し、次のコマンドの途中(私が作成したところ$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