查找所有不以特定字符开头的文件?

时间:2019-07-01 10:55:02

标签: linux bash

我正在使用此代码在bash脚本中查找所有php文件。

for f in $(find ./src -name '*.php'); 
do 
    echo "$f"; 
done

我如何浏览所有* .php文件,但忽略以_开头的文件?

例如,它应列出index.php,但不列出_menu.php

预先感谢

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

#!/bin/bash
find ./src -name '[^_]*.php' | \
while read -r filename; do
   echo "$filename"
done   

说明

[^_]*     # all characters without _ at start 

答案 1 :(得分:2)

-name参数确实允许使用 fnmatch 样式的定位模式,该模式不是正则表达式,也没有负数模式。因此,您需要两种选择之一(如果要在查找操作中进行过滤):

您可以选择使用RE。您需要注意,正则表达式不仅与名称匹配,而且与整个路径匹配,所以这样的方法应该起作用:

find ./src -regex '.*/[^_/][^/]*\.php'

另一种选择是将-name与否定表达式组合在一起(-a -not的意思是“而不是”):

find ./src -name '*.php' -a -not -name '_*'