Est-il possible, lors de la liste d'un répertoire, d'afficher les autorisations numériques Unix telles que 644 plutôt que la sortie symbolique -rw-rw-r--
Merci.
unix
command-line
permissions
Jon Winstanley
la source
la source
alias cls="ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\"%0o \",k);print}'"
chmod 777 dir
votre commande imprime les autorisations comme767
Le plus proche
stat
auquel je puisse penser (en restant assez simple) est , en supposant que vous sachiez quels fichiers vous recherchez. Si vous ne le faites pas, vous*
pouvez trouver la plupart d'entre eux:Il gère les collants, les suides et les entreprises hors de la boîte:
la source
stat -f '%A %N' *
qu'ilstat
n'est pas,ls
donc ce n'est pas la bonne réponse. Cependant, je pense que c'est la bonne réponse dans le contexte du résultat souhaité. Siawk
est autorisé dans un tuyau, alorsfind
devrait être autorisé là oùstat
est appelé-exec
; alors vous pouvez utiliserstat
directement sans*
stat -c '%a %n' * **/*
.vous pouvez simplement utiliser GNU find.
la source
-maxdepth 1
option, sinon il parcourt toute l'arborescence des répertoires.Vous pouvez utiliser la commande suivante
Vous pouvez également utiliser tout
filename
ou audirectoryname
lieu d'*
obtenir un résultat spécifique.Sur Mac, vous pouvez utiliser
la source
stat: illegal option -- c
usage: stat [-FlLnqrsx] [-f format] [-t timefmt] [file ...]
man stat
macOS 10.14.4, la commande devrait êtrestat -f "%Lp %N" *
.%Lp
semble imprimer la même chose que%A
.@Le MYYN
wow, gentil awk! Mais qu'en est-il des morceaux suid, sgid et collant?
Vous devez étendre votre filtre avec s et t, sinon ils ne compteront pas et vous obtenez un mauvais résultat. Pour calculer le nombre octal pour ces drapeaux spéciaux, la procédure est la même mais l'index est à 4 7 et 10. les drapeaux possibles pour les fichiers avec un bit d'exécution sont
---s--s--t
amd pour les fichiers sans bit d'exécution sont---S--S--T
Pour le test:
aura pour résultat:
et
va donner:
la source
alias "lsmod=ls -al|awk '{k=0;s=0;for(i=0;i<=8;i++){;k+=((substr(\$1,i+2,1)~/[rwxst]/)*2^(8-i));};j=4;for(i=4;i<=10;i+=3){;s+=((substr(\$1,i,1)~/[stST]/)*j);j/=2;};if(k){;printf(\"%0o%0o \",s,k);};print;}'"
Utilisez cette option pour afficher les valeurs numériques d'autorisation Unix (valeurs octales) et le nom de fichier.
Utilisez ceci pour afficher les valeurs numériques d'autorisation Unix (valeurs octales) et le sgid et le sticky bit du dossier, le nom d'utilisateur du propriétaire, le nom du groupe, la taille totale en octets et le nom du fichier.
Ajouter
%y
si vous avez besoin de l'heure de la dernière modification dans un format lisible par l'homme. Pour plus d'options voir stat .Meilleure version utilisant un alias
L'utilisation d'un alias est un moyen plus efficace d'accomplir ce dont vous avez besoin et inclut également la couleur. Les éléments suivants affichent d'abord vos résultats organisés par répertoires de groupe, affichent en couleur, tailles d'impression au format lisible par l'homme (par exemple, 1K 234M 2G)
~/.bashrc
et ajoutez un alias pour votre compte ou globalement en éditant/etc/profile.d/custom.sh
La saisie
cls
affiche les résultats de votre nouvelle commande LS.Arborescence des dossiers
Pendant que vous modifiez votre bashrc ou custom.sh, incluez l'alias suivant pour voir une représentation graphique où la saisie
lstree
affichera l'arborescence de vos dossiers actuelleIl afficherait:
la source
Vous n'utilisez pas ls pour obtenir les informations d'autorisation d'un fichier. Vous utilisez la commande stat. Il vous donnera les valeurs numériques souhaitées. La "manière Unix" dit que vous devez inventer votre propre script en utilisant ls (ou 'echo *') et stat et tout ce que vous voulez pour donner les informations dans le format que vous désirez.
la source
En me basant sur la réponse choisie et la suggestion d'utiliser un alias , je l'ai converti en fonction afin que le passage d'un répertoire à la liste soit possible.
la source