使用 stat 以八进制获取文件模式(BSD vs GNU)
Get file mode in octal with stat (BSD vs GNU)
我正在尝试获取八进制的文件位,以评估路径是常规文件还是目录。
这在 BSD
stat
中非常有效,它是我 macOS
:
的一部分
$ stat -f %Op /tmp/test.txt
100644
如何从 GNU
获得 stat
中相同(或相似)的结果。我得到的最好的是:
$ stat -c "%a" /tmp/test.txt
644
$ stat -c "%A" /tmp/test.txt
-rw-r--r--
现在,我看到的唯一方法是解析字符串结果并检查第一个字符是 -
还是 d
.
GNU stat
有 %f
格式代码。不幸的是,它以十六进制显示原始模式,因此您必须使用例如shell 的转换工具。
另请注意,格式是用 -c
指定的。
printf '%06o\n' 0x$(stat -c '%f' /tmp/test.txt)
详情请参考man page.
我正在尝试获取八进制的文件位,以评估路径是常规文件还是目录。
这在 BSD
stat
中非常有效,它是我 macOS
:
$ stat -f %Op /tmp/test.txt
100644
如何从 GNU
获得 stat
中相同(或相似)的结果。我得到的最好的是:
$ stat -c "%a" /tmp/test.txt
644
$ stat -c "%A" /tmp/test.txt
-rw-r--r--
现在,我看到的唯一方法是解析字符串结果并检查第一个字符是 -
还是 d
.
GNU stat
有 %f
格式代码。不幸的是,它以十六进制显示原始模式,因此您必须使用例如shell 的转换工具。
另请注意,格式是用 -c
指定的。
printf '%06o\n' 0x$(stat -c '%f' /tmp/test.txt)
详情请参考man page.