除了隐藏文件(名称以点开头的文件)之外,我想获取目录中的所有文件:
@files = Pathname.new('.').children.select do |file|
file.basename[0] != '.'
end
我无法做到这一点,cos #basename以"<#Pathname:.envrc>"
的形式返回字符串。所以我需要把它file.basename =~ '#<Pathname:.'
,这对我来说似乎很奇怪。
为什么他们用&#34;路径名&#34;作为前缀?字?
答案 0 :(得分:3)
看看OP的答案,我想,它可以写成
@files = Pathname.new('.').children(false).reject do |file|
file.to_s.start_with? '.'
end
children
的文档说 - 如果你将with_directory设置为false,那么返回的路径名将仅包含文件名。这意味着,我们将获得所有的基本名称为路径名对象,例如Pathname:.git
,Pathname:English.rb
。现在应用#to_s
,我们将有'.git'
,'English.rb'
。因此,现在我们可以使用String#start_with?
方法测试是否以.
开头。
答案 1 :(得分:2)
正如Arup建议的,要列出隐藏文件以外的所有文件,我应该这样做:
@files = Pathname.new('.').children.select do |file|
file.to_s[0] != '.'
end