如何使Ruby的Find.find遵循符号链接?
发布时间:2020-12-17 01:19:42 所属栏目:百科 来源:网络整理
导读:我有一个文件层次结构,一些子目录是相对符号链接.我正在使用 Ruby’s Find.find 来浏览这些目录并找到一些特定的文件.但是,它不会查看任何符号链接的目录(它遵循符号链接的文件). 看看source code似乎问题是因为它使用的是File.lstat(文件).directory?测试
我有一个文件层次结构,一些子目录是相对符号链接.我正在使用
Ruby’s
Find.find 来浏览这些目录并找到一些特定的文件.但是,它不会查看任何符号链接的目录(它遵循符号链接的文件).
看看source code似乎问题是因为它使用的是File.lstat(文件).directory?测试某些东西是否是目录.这对符号链接返回false但File.stat.directory?返回true. 如何使Find.find跟随符号链接,缺少猴子修补它以使用File.stat而不是File.lstat? 解决方法
我遇到了类似的情况,并决定遵循真正的道路,没有额外的宝石.
require 'find' paths = ARGV search_dirs = paths.dup found_files = Array.new until search_dirs.size == 0 Find.find( search_dirs.shift ) do |path| if File.directory?( path ) && File.symlink?( path ) search_dirs << File.realdirpath( path ) else found_files << path end end end puts found_files.join("n") 这种方式不能保持带有符号链接的原始路径,但此刻对我来说还不错. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |