Obtenir la valeur numérique chmod pour un fichier

101

Sous FreeBSD et aussi sous Linux, comment puis-je obtenir la chmodvaleur numérique d'un fichier? Par exemple, 644au lieu de -rw-r--r--? J'ai besoin d'un moyen automatique pour un script Bash.

stefan.at.wpf
la source

Réponses:

160

Vous pouvez obtenir la valeur directement en utilisant un format de sortie stat, par exemple BSD / OS X:

stat -f "%OLp" <file>

ou sous Linux

stat --format '%a' <file>

et dans busybox

 stat -c '%a' <file>
teppic
la source
merci, sélectionné comme réponse car c’était le premier et semble aussi être le plus simple :-) @seg_fault: stat -x YOUR_FILE m’apporte plus que la valeur de mode.
stefan.at.wpf
5
en cours d' busyboxutilisationstat -c '%a' <file>
Stuart Cardall
1
les guillemets simples ne sont pas nécessaires et --formatpeuvent être abrégés -c. Cela fonctionne:stat -c %a <file>
johny pourquoi
J'avais besoin de la réponse busybox sur Ubuntu, sinon 'stat: impossible de lire les informations du système de fichiers pour'% OLp ': pas de fichier ou de répertoire de ce type'
tofutim
7

utilisez à stat YOUR_FILEmoins d'écrire un script qui calcule:

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+) = 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

Soit dit en passant, je l' utilise stat commandsur Linux box, non freebsd, parce qu'il enquête HFSprobablement travailler avec UFS.

Golfe Persique
la source
Oui, je l'ai trouvé sous FreeBSD box, utilisez stat -x YOUR_FILEsousFreeBSD box
PersianGulf
stat -r YOUR_FILE |awk '{print $3}' donne votre permission.
PersianGulf
commande de montrer amical? non seulement un nombre 666 ou des codes, -rw-wxrw- mais un texte avec des explications sur chaque permission.
Peter Krauss
@PeterKrauss, il est préférable d'écrire un awkrésultat numérique.
PersianGulf
Merci @PersianGulf. Hum ... Pas de plug-and-play standard ....
Peter Krauss
3

Quelques informations supplémentaires sur stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx
Mateen Ulhaq
la source
il est stat -f %A file.txtsous mac, il retournerait 644 ou un autre 3 nombre numérique.
Weijing Jay Lin
2

essayez ceci pour lister tout

stat --format "%a  %n" *
Hatem Badawi
la source