如何打印查找匹配以及运行 -exec

如何打印查找匹配以及运行 -exec

我想运行一个脚本find,然后在每场比赛中执行一个脚本;但是,我想在每个 .txt 文件的输出上方打印匹配文件的名称exec。我怎样才能产生以下输出:

$ find . -name 'something' -exec sh script.sh {} \;
./something_1
output from 
script.sh something_1
./something_2
output from
script.sh something_2

我目前仅获得来自 的输出script.sh。我尝试过-exec echo {} && sh script.sh {} \;但没有成功。

-exec我更喜欢使用or 的解决方案xargs -print0,即不容易出现空格问题。

答案1

find如果您未指定任何其他操作,则默认打印所有匹配的文件。

当您这样做时-exec ...,它会取代-print.

当你把两个动作放在一起时,就意味着AND

所以只需执行以下两个操作即可:

$ find . -name 'something' -print -exec sh script.sh {} \;

答案2

尝试这样做:

$ find . -name 'something' -exec sh script.sh {} \; |
    script.sh |
    script.sh

相关内容