1
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
4

3 回答 3

4

这是您要查找的代码:

find . -type f \( -iname "*.js" -not -iname "*.spec.js" \) 
于 2017-04-14T07:43:02.770 回答
1

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

FILES=`find . -type f -name '*.js'`
for file in $FILES
do
  if [[ $file != *.spec.js ]]; then
    echo $file
  fi
done
于 2017-04-14T07:43:03.177 回答
0

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

find . ! -name '*.spec*'

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

find . -type f ! -name '*.js' -wholename '*.php'
于 2017-04-14T07:42:58.730 回答