Rubyのコアクラス/モジュールを使用してファイルが存在しないかどうかを確認する方法は何ですか?ルビにファイルが存在しないかどうかを確認する方法は何ですか?
他の方法よりも1つの方法を選択することが理にかなっている理由も分かります。例:Dir['**/*'].grep(/foo/)
を使用すると、正規表現を使用してパスに一致することがわかった最短の方法です。
しかし、Pathnameは通常「うまくいく」と思われるクロスプラットフォームソリューションであるため、Pathname.new('.').find.any? { |pn| pn.fnmatch? "*foo*" }
は良い選択だと思います。
私が見逃した解決策/クラス/モジュールはありますか?また、スピード/効率分析を含む回答に感謝します。
require 'minitest/autorun'
require 'pathname'
class TestTouch < Minitest::Test
include FileUtils
attr_reader :foo
def setup
@foo = Pathname.new('foo')
foo.delete if foo.exist?
end
def teardown
foo.delete if foo.exist?
end
def test_touch
touch foo
cwd = Pathname.new('.')
assert cwd.find.to_a.map(&:to_s).grep(/foo/).any?
assert cwd.find.any? { |pn| pn.fnmatch? "*foo*" }
assert cwd.join('foo').exist?
assert Dir['**/*'].grep(/foo/)
assert Dir.glob('**/*').grep(/foo/)
assert !Dir.glob('foo').empty?
assert File.exist?('foo')
end
end
コードに 'File.exist?'があります。どうしたの?それがあなたが必要とするものです。 Pathnameモジュールを含め、ここに必要なすべてのツールがあります。これに関係するシェルはありません。 – tadman