In FreeBSD and also in Linux, how can I get the numerical chmod
value of a file? For example, 644
instead of -rw-r--r--
? I need an automatic way for a Bash script.
4 Answers
You can get the value directly using a stat output format, e.g.
Linux:
stat --format '%a' <file>
BSD/OS X:
stat -f "%OLp" <file>
Busybox:
stat -c '%a' <file>
-
2single quotes are not needed, and
--format
can be abbreviated-c
. This works:stat -c %a <file>
Commented Sep 23, 2016 at 17:53 -
I needed the busybox answer on Ubuntu, otherwise 'stat: cannot read file system information for '%OLp': No such file or directory'– tofutimCommented Mar 11, 2018 at 13:34
-
I use
lubuntu
, havebusybox
andstat -c
gives the result, but-f
spits out error and prints blocks and inodes info, similar to tofutim.– TimoCommented May 14, 2021 at 19:32
use stat YOUR_FILE
unless write script that calculate :
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+0) = 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
By the way , I use stat command
on Linux box
, not freebsd
, because it investigate HFS
probably work with UFS
.
-
Yes, i found it under
FreeBSD box
, usestat -x YOUR_FILE
underFreeBSD box
Commented Sep 1, 2012 at 19:02 -
stat -r YOUR_FILE |awk '{print $3}'
gives your permission. Commented Sep 1, 2012 at 19:09 -
command to show friendly? not only a number like
666
or codes-rw-wxrw-
but a text with explanations about each permission. Commented Dec 3, 2018 at 19:18 -
@PeterKrauss , It's better to write an
awk
to retrive numerical result. Commented Dec 6, 2018 at 16:07 -
Thanks @PersianGulf. Hum... No plug-and-play standard way.... Commented Dec 6, 2018 at 23:04
Some additional information on stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
-
it is
stat -f %A file.txt
under mac, it would return 644 or some other 3 digital number. Commented Jun 15, 2017 at 7:11 -
this works, the others answers not
stat (GNU coreutils) 8.28
Commented Nov 1, 2023 at 8:53
With GNU stat
, try this to get the value for all non-hidden files in the current working directory.
stat --format "%a %n" -- *