在 RUBY 中,发现文件夹中是否至少有一个 fine(具有符号链接)链接到特定文件



我需要检查文件夹中是否至少将一个罚款(符号链接)链接到特定文件。如果是,请打印字符串"OK",否则打印"NO"

destination_folder="/home/my_folder"
symbolik_link="script.rb"

es)文件夹的"ls -al":

lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test1.rb -> ../test/calculator.rb
lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test2.rb -> ../test/sum.rb
lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test3.rb -> ../test/test.rb

结果:"否"

es)文件夹的"ls -al":

lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test1.rb -> ../test/calculator.rb
lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test2.rb -> ../test/sum.rb
lrwxrwxrwx   1 test test   49 Nov 27 16:09 ruby_test3.rb -> ../test/script.rb

结果:"正常"

一开始

我误解了你的问题。这是一个新的尝试。

首先,您可以检查文件是否是带有File.symlink?(file)的符号链接。

我将假设符号链接指向与原始文件相同的路径就足够了。

要"关注"符号链接,您可以使用 Pathname#realpath

这样:

require 'pathname'
wanted_file_path = File.expand_path('./lib/foo.rb')
directory = Dir.new('.')
found = directory.entries.any? do |entry|
  if File.symlink?(entry)
    Pathname.new(entry).realpath.to_s == wanted_file_path
  end
end
if found
  puts "Found a matching symlink"
else
  puts "No matching symlink found"
end

最新更新