9.3.9. 使用文件循环来重复一个命令

通过匹配某些条件的文件来循环重复一个命令,有几种方法,例如,匹配全局模式”*.ext“.

  1. for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
  • find(1) 和 xargs(1) 联合:
  1. find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
  • find(1) 使用 “-exec“ 选项并执行命令:
  1. find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
  • find(1) 使用 “-exec“ 选项并执行一个短的 shell 脚本:
  1. find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;

上面的列子确保适当处理怪异的文件名(如包含空格)。 find(1) 更多高级的用法,参见 第 10.1.5 节 “查找文件的语法”.