循环遍历bash脚本中跳过* .spec.js文件的目录中的所有* .js文件

时间:2017-04-14 07:32:56

标签: linux bash gnu-findutils

FILES=`find . -type f -name '*.js'`
for file in $FILES
do
  # some task
done

这将循环遍历所有* .js文件,但是我们想要跳过一些 .spec.js 文件。

a.js
a.spec.js
b.js
x.spec.js
c.js

应该迭代:

a.js
b.js
c.js

3 个答案:

答案 0 :(得分:3)

这是您要查找的代码:

find . -type f \( -iname "*.js" -not -iname "*.spec.js" \) 

答案 1 :(得分:0)

您正在寻找查找的否定!功能,使其与特定名称的文件不匹配。另外,我认为使用wholename应该更快。

find . ! -name '*.spec*'

所以你的最终命令(未经测试)将是:

find . -type f ! -name '*.js' -wholename '*.php'

答案 2 :(得分:0)

只需添加一个实现想要特定文件名模式的条件:

FILES=`find . -type f -name '*.js'`
for file in $FILES
do
  if [[ $file != *.spec.js ]]; then
    echo $file
  fi
done