是否可以为找到的每个文件获得“find -exec”扩展反引号?

Rom*_*nSt 9 linux bash

这是一个工作正常的命令:

echo Blah: `stat -c %a .`
Run Code Online (Sandbox Code Playgroud)

是否可以对找到find -exec的每个文件执行相同的操作,而{}不是.?

Den*_*son 10

最好的方法是使用位置参数。并且$()是反引号的命令替换的首选,因为它更具可读性(不会与单引号混淆)并且可以轻松嵌套而无需进行大量转义。

find . -exec bash -c 'echo Blah: $(stat -c %a "$@")' _ {} \;
Run Code Online (Sandbox Code Playgroud)

下划线是 的占位符$0


Ign*_*ams 6

做什么的?

find ... -printf 'Blah: %m\n'
Run Code Online (Sandbox Code Playgroud)

或者bash -c如果你真的必须使用:

 find . -exec bash -c 'echo Blah: `stat -c %a {}`' \;
Run Code Online (Sandbox Code Playgroud)