获取文件的chmod数值


100

在FreeBSD和Linux中,如何获取chmod文件的数值?例如,644代替-rw-r--r--?我需要一种Bash脚本的自动方式。

Answers:


159

您可以使用stat输出格式直接获取值,例如BSD / OS X:

stat -f "%OLp" <file>

或在Linux中

stat --format '%a' <file>

并在busybox中

 stat -c '%a' <file>

谢谢,被选为答案是因为它是第一个,而且似乎也是最简单的一个:-) @seg_fault:stat -x YOUR_FILE给我的不仅仅是模式值。
stefan.at.wpf 2012年

5
busybox使用stat -c '%a' <file>
斯图尔特Cardall

1
不需要单引号,--format可以将其缩写-c。这有效:stat -c %a <file>
约翰尼,为什么

我需要Ubuntu上的busybox答案,否则需要'stat:无法读取'%OLp'的文件系统信息:没有这样的文件或目录'
tofutim

7

使用stat YOUR_FILE除非编写脚本来计算:

rwx rwx rwx ==> ( r = 4 ) if set + ( w = 2) if set + (x = 1) if set , for example:
You have :
-rw-wxrw- => (4+2+0)(0+2+1)(4+2+) = 0636 
First argument before 9 permissions is one of :
- = regular file
d =  directory
b = block device
c = character device
s = socket
p = pipe
f = fifo

顺便说一句,我用stat commandLinux box,而不是用freebsd,因为它调查了HFS可能与之配合使用UFS


是的,我发现它下FreeBSD box,利用stat -x YOUR_FILEFreeBSD box
波斯湾

stat -r YOUR_FILE |awk '{print $3}' 表示同意。
PersianGulf 2012年

命令显示友好?不仅是类似的数字666 或代码,-rw-wxrw- 还包括带有每个许可说明的文本。
彼得·克劳斯

@PeterKrauss,最好编写一个awk以检索数值结果。
PersianGulf

谢谢@PersianGulf。呜呜......无插件和播放标准的方式....
彼得·克劳斯

2

有关以下方面的一些其他信息stat

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

如果stat -f %A file.txt在mac下,它将返回644或其他3个数字。
魏京杰(Jin Lin)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.