如何使用find命令查找除Dev开头外的所有.txt格式文件?
正确的
find命令写法 没问题,我帮你调整命令来实现“查找所有.txt文件,排除文件名以Dev开头的”需求,这里有两种实用的写法:
推荐写法(直观易读)
这种方式用基础的-name匹配和取反操作,逻辑清晰,容易维护:
find . -type f -name '*.txt' ! -name 'Dev*.txt' -print0
各部分解释:
-type f:可选但推荐,确保只查找文件(避免匹配名称带.txt的目录)-name '*.txt':匹配所有后缀为.txt的文件! -name 'Dev*.txt':排除所有文件名以Dev开头的.txt文件-print0:保留你原本的空字符分隔输出格式,完美适配带空格、特殊字符的文件名场景
正则表达式写法(适合复杂匹配场景)
如果你更倾向用正则来实现,也可以这样写(需指定正则扩展语法以支持负向预查):
find . -type f -regextype posix-extended -regex '.*/(?!Dev).*\.txt$' -print0
这里(?!Dev)是负向预查语法,表示文件名开头不能是Dev,-regextype posix-extended用来让find识别这种正则规则。
内容的提问来源于stack exchange,提问作者D.Rude




