在BASH中如何查找无文件扩展名的文件?
查找无后缀(无末尾点)的文件
你当前执行的find -maxdepth 1 -type f -name "*."是匹配文件名以点结尾的文件,所以仅返回./tst.。要找到像./tst这种完全不带点(无后缀、无末尾点)的文件,可以用以下几种方法:
方法一:通配符精准匹配无点文件名
使用[^.]*通配符匹配不含任何点的文件名,命令如下:find -maxdepth 1 -type f -name "[^.]*"这个命令会严格匹配所有文件名里没有点的文件,仅返回
./tst。方法二:正则表达式匹配
通过-regex参数指定正则规则,匹配当前目录下文件名不含点的文件:find -maxdepth 1 -type f -regex "./[^.]*"效果和方法一完全一致,适合习惯正则的场景。
补充:若需匹配「不以点结尾但中间可含点」的文件
如果你的需求是排除所有以点结尾的文件(比如保留tst、tst.txt等,但排除tst.),可以用取反规则:find -maxdepth 1 -type f ! -name "*."
内容的提问来源于stack exchange,提问作者cssjs
相关产品推荐
相关产品推荐

