xargs 결과 {}를 $(cmd {})에 넣는 방법은 무엇입니까? [폐쇄]

xargs 결과 {}를 $(cmd {})에 넣는 방법은 무엇입니까? [폐쇄]

예를 들어 find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} echo "{} =>" $(realpath {}) 다음과 같이 출력하고 싶습니다.

/usr/lib/libblas.so.3gf=>/usr/lib/libblas/libblas.so.3gf.0
/usr/lib/libblas.so=>/usr/lib/libblas/libblas.so.3gf.0
/usr/lib/libblas.a=>/usr/lib/libblas/libblas.a

$()스크립트가 실제로 실행되기 전에 in 값이 확장되므로 이는 작동하지 않습니다 .

이 결과를 얻을 수 있는 방법이 있나요? Bash에 루프가 없나요?

답변1

이 방법을 시도해 볼 수 있습니다

find /usr/lib -maxdepth 1 -type l -iname "*lib*" -print \
   | xargs -P1 -I{} -- sh -c 'echo -n " {} => " && realpath "{}"'

답변2

  find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} sh -c 'echo "{} =>" $(realpath {})'

기본적으로 서브쉘을 시작해야 합니다. FWIW 실제 경로가 무엇인지 모르겠습니다. 별칭이나 함수인 경우 하위 쉘은 아마도 bash여야 합니다.

관련 정보