J'essaie de chercher des lignes dans le premier champ d'une sortie qui sont supérieures à un nombre donné. Dans ce cas, ce nombre est 755
. En fin de compte, ce que je fais est d'essayer de répertorier chaque fichier avec des privilèges supérieurs à (et non égaux à) 755
en utilisant stat -c '%a %n' *
puis dirigez-vous vers un peu de grep'ing (ou peut-être sed'ing?) pour obtenir cette liste finale. Avez-vous des idées sur la meilleure façon d'y parvenir?
essaye ça:
stat -c '%a %n' *|awk '$1>755'
si vous voulez juste le nom de fichier dans votre sortie finale, sautez les numéros de privilège, vous pouvez:
stat -c '%a %n' *|awk '$1>755{print $2}'
MODIFIER
en fait, vous pourriez faire le chmod
dans awk. mais vous devez vous assurer que l'utilisateur exécute la ligne awk a l'autorisation de modifier ces fichiers.
stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'
encore une fois, supposez que le nom de fichier ne comporte aucun espace.
J'utiliserais awk(1)
:
stat -c '%a %n' * | awk '$1 > 755'
Le modèle awk
correspond aux lignes où le premier champ est supérieur à 755. Vous pouvez également ajouter une action si vous souhaitez imprimer un sous-ensemble d'une ligne ou quelque chose de différent (voir la réponse de @ Kent).
Ni grep
ni sed
ne sont bons en arithmétique. awk
pourrait aider (malheureusement je ne le sais pas). Mais notez que find
peut également être utile ici:
-perm mode
File's permission bits are exactly mode (octal or symbolic).
Since an exact match is required, if you want to use this form
for symbolic modes, you may have to specify a rather complex
mode string. For example -perm g=w will only match files which
have mode 0020 (that is, ones for which group write permission
is the only permission set). It is more likely that you will
want to use the `/' or `-' forms, for example -perm -g=w, which
matches any file with group write permission. See the EXAMPLES
section for some illustrative examples.
-perm -mode
All of the permission bits mode are set for the file. Symbolic
modes are accepted in this form, and this is usually the way in
which would want to use them. You must specify `u', `g' or `o'
if you use a symbolic mode. See the EXAMPLES section for some
illustrative examples.
-perm /mode
Any of the permission bits mode are set for the file. Symbolic
modes are accepted in this form. You must specify `u', `g' or
`o' if you use a symbolic mode. See the EXAMPLES section for
some illustrative examples. If no permission bits in mode are
set, this test matches any file (the idea here is to be consis‐
tent with the behaviour of -perm -000).
Donc, ce qui pourrait fonctionner pour vous, c'est:
find . -perm -755 -printf '%m %p\n'
Retirez simplement le -printf
partie si vous n'avez besoin que de noms de fichiers.