如何检查两条路径是否指向相同的文件夹位置Ruby?

时间:2018-01-25 10:38:07

标签: ruby path logstash directory

我有两个文件夹路径作为字符串。如何检查两个路径是否指向同一文件夹位置。我不想比较字符串,因为它不是正确的方法。我尝试使用File.identical?,但它返回false,因为它似乎期望两个文件路径而不是文件夹路径作为agruments。为了您的信息,我想在Logstash

中的Ruby过滤器插件中使用此代码

2 个答案:

答案 0 :(得分:2)

如果提供精确和正确的位置,我在比较字符串时看不到任何不当之处。如果File.identical?不起作用而Dir没有提供类似的方法,我只会使用File.realdirpath()转换路径并进行比较。

File.realdirpath("first/path/") == File.realdirpath("second/path/")

遵循符号链接。

https://ruby-doc.org/core-2.5.0/File.html#method-c-realdirpath

如果您使用类似Unix的系统并且真的不信任字符串比较,则可以比较inode数字。

File.stat(File.realdirpath("first/path/")).ino == File.stat(File.realdirpath("second/path/")).ino

<强> EDITED 没有注意到你对Windows的评论。我不知道File::Stat究竟是如何在那里工作的,但它应该是可用的,并且使用它提供的信息可能比字符串比较更好。

答案 1 :(得分:1)

 File.realpath(folder_path) == File.realpath(other_folder_path)

此方法返回实际文件系统中不包含符号链接或点的绝对路径名字符串。 与File.realdirpath不同,调用此方法时,路径名的所有组件都必须存在。