下面的示例显示了我想要执行的操作,即从上一个管道中获取结果并将其放入下一个命令的中间(我编写的位置$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
在这种情况下,使用 shell 进行迭代
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