看哪:
bear@ptah:~/Pictures/Wallpapers
$ stat /home/bear/Dropbox/.#NineFoxes.org
File: /home/bear/Dropbox/.#NineFoxes.org -> polar@fennec.3781:1659418908
Size: 28 Blocks: 0 IO Block: 4096 symbolic link
Device: 10306h/66310d Inode: 57016400 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ bear) Gid: ( 1000/ bear)
Access: 2022-09-23 12:31:49.280214712 -0700
Modify: 2022-08-07 22:25:24.000000000 -0700
Change: 2022-09-23 12:31:49.532216732 -0700
Birth: 2022-09-23 12:31:49.280214712 -0700
bear@ptah:~/Pictures/Wallpapers
$ stat /home/bear/Dropbox/foo.log
File: /home/bear/Dropbox/foo.log
Size: 1471 Blocks: 8 IO Block: 4096 regular file
Device: 10306h/66310d Inode: 57016411 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ bear) Gid: ( 1000/ bear)
Access: 2022-09-23 12:31:49.280214712 -0700
Modify: 2022-09-10 23:28:04.000000000 -0700
Change: 2022-09-23 12:31:50.116221410 -0700
Birth: 2022-09-23 12:31:49.280214712 -0700
bear@ptah:~/Pictures/Wallpapers
$ irb
irb(main):001:0> File.stat '/home/bear/Dropbox/foo.log'
=> #<File::Stat dev=0x10306, ino=57016411, mode=0100644, nlink=1, uid=1000, gid=1000, rdev=0x0, size=1471, blksize=4096, blocks=8, atime=2022-09-23 12:31:49.280214712 -0700, mtime=2022-09-10 23:28:04 -0700, ctime=2022-09-23 12:31:50.11622141 -0700>
irb(main):002:0> File.stat '/home/bear/Dropbox/.#NineFoxes.org'
Traceback (most recent call last):
5: from /usr/bin/irb:23:in `<main>'
4: from /usr/bin/irb:23:in `load'
3: from /usr/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
2: from (irb):2
1: from (irb):2:in `stat'
Errno::ENOENT (No such file or directory @ rb_file_s_stat - /home/bear/Dropbox/.#NineFoxes.org)
irb(main):003:0>
檔案名完全正確;那是檔案,Ruby 無法統計它。Linux 可以,其他一切都可以。Ruby 也可以統計一個沒有哈希的檔案。需要什么才能使這個檔案對 Ruby 可用?(不,重命名不是一種選擇;我需要統計檔案。)
注意:這也是 Dir.glob 找到的檔案名。這是 Ruby 認為的檔案名。
irb(main):003:0> x = Dir.glob('Dropbox/*.org', File::FNM_DOTMATCH)
=> ["Dropbox/NineFoxes.org", "Dropbox/.#NineFoxes.org", "Dropbox/Elf.org", "Dropbox/Midra.org"]
irb(main):004:0> File.stat(x[0])
=> #<File::Stat dev=0x10306, ino=57016406, mode=0100744, nlink=1, uid=1000, gid=1000, rdev=0x0, size=38102, blksize=4096, blocks=80, atime=2022-09-23 12:31:49.280214712 -0700, mtime=2022-07-29 22:00:02 -0700, ctime=2022-09-23 12:31:50.11622141 -0700>
irb(main):005:0> File.stat(x[1])
Traceback (most recent call last):
5: from /usr/bin/irb:23:in `<main>'
4: from /usr/bin/irb:23:in `load'
3: from /usr/lib/ruby/gems/2.7.0/gems/irb-1.2.6/exe/irb:11:in `<top (required)>'
2: from (irb):5
1: from (irb):5:in `stat'
Errno::ENOENT (No such file or directory @ rb_file_s_stat - Dropbox/.#NineFoxes.org)
irb(main):006:0> File.stat(x[2])
=> #<File::Stat dev=0x10306, ino=57016408, mode=0100644, nlink=1, uid=1000, gid=1000, rdev=0x0, size=8416, blksize=4096, blocks=24, atime=2022-09-23 12:31:49.280214712 -0700, mtime=2022-09-19 18:08:32 -0700, ctime=2022-09-23 12:31:50.120221442 -0700>
irb(main):007:0>
附加:這是 Linux、MX Linux 21、ruby 2.7.4p191(2021-07-07 修訂版 a21a3b7d23)[x86_64-linux-gnu]。外殼是 Bash。
uj5u.com熱心網友回復:
File.stat只是呼叫File::Stat.new,如果檔案不存在,則會引發例外;這是您看到的行為。
請注意,這/home/bear/Dropbox/.#NineFoxes.org是一個符號鏈接(請參閱Access: 0777/lrwxrwxrwxin stat 的輸出)。Ruby 的File.stat檔案沒有說明它是否遵循符號鏈接,而是File.lstat說:
與 相同
File::stat,但不跟隨最后一個符號鏈接。相反,報告鏈接本身。
因此暗示File.stat將遵循符號鏈接并統計它所指向的內容。
所以/home/bear/Dropbox/.#NineFoxes.org符號鏈接確實存在,但符號鏈接參考的內容不存在。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510042.html
標籤:红宝石文件
上一篇:如何回傳我想要的結果陣列
