我有一个文件层次结构,一些子目录是相对符号链接。我在用Ruby's Find.find http://apidock.com/ruby/Find爬行这些目录并找到一些特定的文件。但是,它不会查找任何符号链接的目录(它遵循符号链接的文件)。
看着源代码 http://apidock.com/ruby/Find/find看来问题是因为它正在使用File.lstat(file).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")
这种方式无法保留带有符号链接的原始路径,但目前对我来说很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)