execute o comando sub dentro dos xargs

7

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?

    
por glenn jackman 24.11.2012 / 09:16

3 respostas

7

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")' - {}
    
por 24.11.2012 / 14:07
5
mkdir A ; touch A/file1 ; touch A/file2
mkdir B
for i in 'ls A'; do ln -sf $PWD/A/$i B/; done
    
por 24.11.2012 / 09:27
3

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
    
por 24.11.2012 / 09:22

Tags