Linux下如何列出文件名第n位为字符e的所有文件?
查找文件名第n位为e的文件
原命令问题分析
你写的 find -regextype posix-egrep -regex '^./[e]{5}\.txt$' 逻辑错误,这个正则是匹配文件名全为5个e且后缀是txt的文件(比如eeeee.txt),而不是第5位字符为e的文件。
正确解决方法
方法1:用find正则精确匹配
如果要找当前目录下第n位字符为e的文件,正则需要表示「前n-1个任意字符 + e + 后续任意字符(含后缀)」。以n=5为例,命令如下:
find -maxdepth 1 -regextype posix-egrep -regex '^./.{4}e.*$'
-maxdepth 1限制只查找当前目录,避免递归子目录.{4}匹配前4个任意字符(对应n-1),接着是e,.*匹配后续任意内容
如果要限定后缀为txt,调整正则为:
find -maxdepth 1 -regextype posix-egrep -regex '^./.{4}e.*\.txt$'
其他n值只需把.{4}改成.{n-1}即可,比如n=3时用.{2}。
方法2:用shell通配符更简便
直接用ls结合通配符?(单个任意字符),以n=5为例:
ls ????e*
- 4个
?匹配前4位任意字符,e是第5位,*匹配后续任意内容
如果要限定txt后缀:
ls ????e*.txt
这种方式无需find,更直观高效,且默认只查当前目录。
内容的提问来源于stack exchange,提问作者Kr Shanu
相关产品推荐
相关产品推荐

