我想运行一个脚本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