7

Я хочу сделать мягкую ссылку всех двоичных файлов из папки A в папку B, как,

find /home/A/bin/* -print | xargs -I {} ln -sf {} /tmp/B/$(basename {})

проблема в том, что я не могу выполнить подкоманду внутри xargs.

что я должен делать ?

3 ответа3

7

запуск subshell сделает то, что вы хотите:

find /home/A/bin/* -print |
xargs -I {} sh -c 'ln -sf "$1" /tmp/B/$(basename "$1")' - {}
5
mkdir A ; touch A/file1 ; touch A/file2
mkdir B
for i in `ls A`; do ln -sf $PWD/A/$i B/; done
3

Вы можете выполнить непосредственно ln -sf /h/a/bin/* /tmp .

Или вы можете перейти к /tmp и сделать это:

cd /tmp
ln -sf /home/A/bin/*

Использование xargs:

cd /tmp
find /home/A/bin/* -print0 | xargs -0 ln

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .