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