UNIX/Linux/Mac OSX получают разрешение файла как номер

Это должно быть действительно просто сделать, но полностью нарисовал пробел. Я вижу разрешение файлов с помощью ls -la, которое может дать что-то вроде:

-rwxr-xr-x   1 james  staff   68  8 Feb 13:33 basic.sh*
-rw-r--r--   1 james  staff   68  8 Feb 13:33 otherFile.sh*

Как перевести это в число для использования с chmod как chmod 755 otherFile.sh (без выполнения ручного преобразования).

Ответ 1

stat -f "%Lp" [filename] работает для меня в OS X 10.8.

Ответ 2

Вы должны использовать команду stat вместо ls. От взгляда на manpage это должно работать, чтобы получить разрешения на доступ к файлам:

for f in dir/*
do
    perms=$(stat -f '0%Hp%Mp%Lp' $f)
    echo "$f has permissions $perms"
done

(хотя я сейчас не на своем Mac и поэтому не могу его протестировать).