o lançamento de um subshell fará o que você deseja:
find /home/A/bin/* -print |
xargs -I {} sh -c 'ln -sf "$1" /tmp/B/$(basename "$1")' - {}
Eu quero fazer um link suave de todos os arquivos binários da pasta A para a pasta B como,
find /home/A/bin/* -print | xargs -I {} ln -sf {} /tmp/B/$(basename {})
o problema é que eu não consigo executar o subcomando dentro do xargs.
o que devo fazer?
o lançamento de um subshell fará o que você deseja:
find /home/A/bin/* -print |
xargs -I {} sh -c 'ln -sf "$1" /tmp/B/$(basename "$1")' - {}
mkdir A ; touch A/file1 ; touch A/file2
mkdir B
for i in 'ls A'; do ln -sf $PWD/A/$i B/; done
Você pode executar diretamente ln -sf /h/a/bin/* /tmp
.
Ou você pode ir para / tmp e fazer isso:
cd /tmp
ln -sf /home/A/bin/*
Usando xargs:
cd /tmp
find /home/A/bin/* -print0 | xargs -0 ln