아래 예는 내가 하고 싶은 일을 보여줍니다. 즉, 이전 파이프라인의 결과를 가져와서 다음 명령의 중간(내가 작성한 곳 $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