使用 bash,如何在目录结构中查找除 *.xml 文件之外的文件?我只是想用
find . -regex ....
正则表达式:
'.*^((?!xml).)*$'
但没有预期的结果......
还是有另一种方法来实现这一点,即没有正则表达式匹配?
find . ! -name "*.xml" -type f
find . -not -name '*.xml'
应该做的伎俩。
比find
上面的解决方案更草率,它做的工作比它需要的多,但你可以做
find . | grep -v '\.xml$'
另外,这是源代码树吗?也许您在树中拥有所有源代码和一些 XML,但您只想获取源代码?如果你使用ack,你可以这样做:
ack -f --noxml
用 bash:
shopt -s extglob globstar nullglob
for f in **/*!(.xml); do
[[ -d $f ]] && continue
# do stuff with $f
done
您也可以使用 or-ring 执行此操作,如下所示:
find . -type f -name "*.xml" -o -type f -print
尝试这样的正则表达式解决方案:
find . -regextype posix-extended -not -regex '^.*\.xml$'