File::Stat#mode
以十进制数字(, 16832)返回文件权限。执行to_s(8)
给出相应的八进制表示(40700)。
是否有任何用于以符号表示法(“drwx ------”)输出权限的内置方法或库,以及它们在ls -l
中格式化的方式?
答案 0 :(得分:1)
我认为自己很容易做到这一点。只需在数字和字符串表示之间创建一个映射,然后转换它:
permissions_map = {
'7' => 'rwx',
'6' => 'rw-',
'5' => 'r-x',
'4' => 'r--',
'3' => '-wx',
'2' => '-w-',
'1' => '--x'
}
Dir.foreach('./') do |item|
next if ['.', '..'].include?(item)
f = File.stat(item)
permission_string = ''
sprintf('%o', f.mode)[-3..-1].chars.each do |digit|
permission_string << permissions_map[digit]
end
puts permission_string
end