出力の最初のフィールドで、指定された数より大きい行をgrepしようとしています。この場合、その番号は755
です。最終的に、私がやっていることは、755
を使用してstat -c '%a %n' *
よりも大きい(かつ等しくない)特権を持つすべてのファイルをリストし、次にgrep'ing(または場合によってはsed'ing)にパイプしようとしていますか? )この最終リストを取得します。これをどのように達成するのが最善かというアイデアはありますか?
これを試して:
stat -c '%a %n' *|awk '$1>755'
最終出力にファイル名だけが必要な場合は、特権番号をスキップします。
stat -c '%a %n' *|awk '$1>755{print $2}'
[〜#〜] edit [〜#〜]
実際には、awk内でchmod
を実行できます。ただし、awk行を実行するユーザーにこれらのファイルを変更する権限があることを確認する必要があります。
stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'
繰り返しますが、ファイル名にスペースがないと仮定します。
私は awk(1)
を使用します:
stat -c '%a %n' * | awk '$1 > 755'
awk
パターンは、最初のフィールドが755より大きい行と一致します。行のサブセットまたは別の何かを印刷する場合は、アクションを追加できます(@Kentの回答を参照)。
grep
もsed
も算術が得意ではありません。 awk
が役立つ場合があります(残念ながらわかりません)。ただし、ここでもfind
が便利です。
-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).
だからあなたのために働くことができるのは:
find . -perm -755 -printf '%m %p\n'
-printf
部分は、ファイル名のみが必要な場合。