Dir.glob("*", File::FNM_DOTMATCH)
遇到包含这样的代字号的文件路径时,我得到零回报:
~setup~.mak 253.0 B
这是整个说明:
l =
Dir.
glob("*", File::FNM_DOTMATCH).
tap { |a| a.shift(2) }.
map { |p,i| p.force_encoding('utf-8')}.
sort_by { |d| File.mtime(d) }.reverse!
我该如何解决?
答案 0 :(得分:0)
此问题与波浪号无关。
Dir::glob
不保证返回已排序的列表。我怀疑您的shift(2)
是为了摆脱.
和..
,但它们不是列表中的前两项。另外,您无需使用reverse
的 banged 版本来反转就位。
明确拒绝这些幻像目录:
Dir.
glob("*", File::FNM_DOTMATCH).
reject { |a| a =~ /\A\.+\z/ }. # ⇐ THIS
map { |p, i| p.force_encoding(Encoding::UTF_8) }.
sort_by { |d| File.mtime(d) }.
reverse
# $ touch ~setup~.mak
# $ ruby -e 'puts Dir.glob("*", File::FNM_DOTMATCH).reject { |a| a =~ /\A\.+\z/ }'
#⇒ ~setup~.mak