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

Loop over all *.js files in a directory skipping *.spec.js files in bash script

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

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

find . ! -name '*.spec*'

因此您的最终命令(未测试)将是:

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

这是您要查找的代码:

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

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

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