파이프의 결과가 다음 명령의 마지막 매개변수가 아닌 경우 수행할 작업

파이프의 결과가 다음 명령의 마지막 매개변수가 아닌 경우 수행할 작업

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

관련 정보