如何以优雅的方式对子文件夹中具有特定扩展名的所有文件执行操作?

Vor*_*rac 22 shell bash find

我目前最好的选择是:

for i in $(find . -name *.jpg); do echo $i; done
Run Code Online (Sandbox Code Playgroud)

问题:不处理文件名中的空格。

注意:我也喜欢这样做的图形方式,例如“树”命令。

Jan*_*ary 29

规范的方法是做

find . -name '*.jpg' -exec echo {} \;
Run Code Online (Sandbox Code Playgroud)

(替换\;+一个以上的文件传递给echo在时间)

或(特定于 GNU,尽管现在一些 BSD 也有它):

find . -name '*.jpg' -print0 | xargs -r0 echo
Run Code Online (Sandbox Code Playgroud)

zsh:

find . -name '*.jpg' -exec echo {} \;
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 **xargs -0**,则应将其与 **find -0** 匹配 (2认同)