9.3.9. 使用文件循环来重复一个命令
通过匹配某些条件的文件来循环重复一个命令,有几种方法,例如,匹配全局模式”*.ext
“.
- Shell 循环方式(参见 第 12.1.4 节 “shell 循环”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
- find(1) 和 xargs(1) 联合:
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
- find(1) 使用 “
-exec
“ 选项并执行命令:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
- find(1) 使用 “
-exec
“ 选项并执行一个短的 shell 脚本:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
上面的列子确保适当处理怪异的文件名(如包含空格)。 find(1) 更多高级的用法,参见 第 10.1.5 节 “查找文件的语法”.