在 xargs 中执行子命令

8 unix shell

我想将文件夹 A 的所有二进制文件软链接到文件夹 B,例如,

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

问题是我无法在 xargs 中执行子命令。

我该怎么办 ?

gle*_*man 9

启动子shell会做你想做的事:

find /home/A/bin/* -print |
xargs -I {} sh -c 'ln -sf "$1" /tmp/B/$(basename "$1")' - {}
Run Code Online (Sandbox Code Playgroud)


小智 5

mkdir A ; touch A/file1 ; touch A/file2
mkdir B
for i in `ls A`; do ln -sf $PWD/A/$i B/; done
Run Code Online (Sandbox Code Playgroud)


小智 3

直接执行即可ln -sf /h/a/bin/* /tmp

或者,您可以转到 /tmp,然后执行以下操作:

cd /tmp
ln -sf /home/A/bin/*
Run Code Online (Sandbox Code Playgroud)

使用 xargs:

cd /tmp
find /home/A/bin/* -print0 | xargs -0 ln
Run Code Online (Sandbox Code Playgroud)