是否可以列出位于目录中的所有“.php”文件及其八进制权限?
我想这样列出它们:
775 /folder/file.php
644 /folder/asd/file2.php
etc...
答案1
find /folder -name '*.php' -type f -print0 |
perl -0 -lne 'printf "%o %s\n", (lstat $_)[2]&07777, $_'
另请参阅此相关问题:将 ls -l 输出格式转换为 chmod 格式。
-print0
是一个 GNU 扩展,也受到 OS/X 等 BSD 的支持。 GNUfind
也有一个-printf
可以显示模式的谓词,但该谓词尚未添加到 BSD 的find
.
(在 OS/X 10.8.4 和 Debian 7 上测试,但应该适用于任何具有任何版本的系统perl
,find -print0
其中包括所有 GNU 系统和所有最新的 BSD)
答案2
find /some/path -type f -name "*.php" -exec sh -c 'stat -f "%p %N" "{}" | sed -E s/^.{3}//' \;
这是在 OS X 10.8.4 上测试的。 sed 管道只是从输出(文件类型)中删除前 3 个字符。看起来 OS Xstat
不支持直接八进制权限输出。