如何使用Ruby中的一个命令检查目录/文件/符号链接是否存在

时间:2011-02-04 11:39:15

标签: ruby file directory symlink exists

是否有一种方法可以检测目录/文件/符号链接等。实体(更广义)存在?

我需要一个函数,因为我需要检查一个可能是目录,文件或符号链接的路径数组。我知道File.exists?"file_path"适用于目录和文件,但不适用于符号链接(File.symlink?"symlink_path")。

2 个答案:

答案 0 :(得分:123)

标准文件模块具有通常的file tests可用:

RUBY_VERSION # => "1.9.2"
bashrc = ENV['HOME'] + '/.bashrc'
File.exist?(bashrc) # => true
File.file?(bashrc)  # => true
File.directory?(bashrc) # => false

你应该能够找到你想要的东西。


  

OP:“谢谢,但我需要所有三个真或假”

显然不是。好的,尝试类似的事情:

def file_dir_or_symlink_exists?(path_to_file)
  File.exist?(path_to_file) || File.symlink?(path_to_file)
end

file_dir_or_symlink_exists?(bashrc)                            # => true
file_dir_or_symlink_exists?('/Users')                          # => true
file_dir_or_symlink_exists?('/usr/bin/ruby')                   # => true
file_dir_or_symlink_exists?('some/bogus/path/to/a/black/hole') # => false

答案 1 :(得分:13)

为什么不定义自己的函数File.exists?(path) or File.symlink?(path)并使用它?