MacOsx - Shell - 列出特定文件夹内的所有 .php 文件及其八进制权限

MacOsx - Shell - 列出特定文件夹内的所有 .php 文件及其八进制权限

是否可以列出位于目录中的所有“.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 上测试,但应该适用于任何具有任何版本的系统perlfind -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不支持直接八进制权限输出。

相关内容