如何使用Ruby查找电脑所有.conf文件 现有代码无输出如何解决
问题原因及解决方法
你写的Dir.glob("**/*.conf")默认是从当前工作目录开始递归遍历,不是从整个电脑的根目录开始扫描,这是没有输出最常见的原因:你运行脚本的当前目录下没有任何后缀为.conf的文件,也没有子目录存放这类文件。
其他可能的原因
- 权限不足:如果你修改了遍历路径到系统级目录(比如Linux的/etc、Windows的C盘系统目录),Ruby进程没有读取对应目录的权限时,会静默跳过这些目录不会抛出错误,自然也不会输出匹配到的文件
- 大小写敏感问题:部分操作系统(比如macOS默认关闭大小写敏感、Windows全系统不区分大小写)如果你的文件后缀是.CONF大写形式,默认不会被匹配到,需要加匹配参数忽略大小写
- 隐藏目录/文件过滤:
Dir.glob默认不会匹配路径中以.开头的隐藏目录和隐藏文件,如果你要找的.conf文件存放在隐藏目录下,也会被漏掉
修复后的代码示例
如果要遍历整个系统根目录的所有.conf文件,对应不同操作系统修改根路径即可:
# macOS / Linux 从根目录开始遍历,添加参数支持匹配隐藏文件、忽略大小写 Dir.glob("/**/*.conf", File::FNM_DOTMATCH | File::FNM_CASEFOLD) do |file| puts file rescue Errno::EACCES # 跳过无权限访问的目录,避免崩溃 next end
# Windows 从C盘根目录开始遍历 Dir.glob("C:/**/*.conf", File::FNM_DOTMATCH | File::FNM_CASEFOLD) do |file| puts file rescue Errno::EACCES next end
如果只是想扫描当前用户目录下的.conf文件,把路径替换为~/**/*.conf即可,扫描速度会比遍历整个系统盘快很多。
内容的提问来源于stack exchange,提问作者Nikita Fernando
相关产品推荐
相关产品推荐

