我正在使用此代码在bash脚本中查找所有php文件。
for f in $(find ./src -name '*.php');
do
echo "$f";
done
我如何浏览所有* .php文件,但忽略以_开头的文件?
例如,它应列出index.php,但不列出_menu.php
预先感谢
答案 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 '_*'