xargs como colocar o resultado {} em $ (cmd {})? [fechadas]

3

por exemplo: %código% Eu gostaria que saísse:

/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

Isso não funcionará porque o valor em find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} echo "{} =>" $(realpath {}) é expandido antes da execução real do script.

Existe alguma maneira de eu conseguir esse resultado? sem loop no bash?

    
por Wang 12.07.2014 / 22:42

2 respostas

1

Você pode tentar assim,

find /usr/lib -maxdepth 1 -type l -iname "*lib*" -print \
   | xargs -P1 -I{} -- sh -c 'echo -n " {} => " && realpath "{}"'
    
por 12.07.2014 / 23:26
1
  find /usr/lib -maxdepth 1 -type l -iname "*libblas*"|xargs -I{} sh -c 'echo "{} =>" $(realpath {})'

Basicamente você tem que começar um subshell. FWIW Eu não sei o que é realpath; se for um alias ou uma função, seu subshell pode precisar ser bash.

    
por 12.07.2014 / 23:21

Tags