web-dev-qa-db-ja.com

指定された数値より大きい数値のGrep行

出力の最初のフィールドで、指定された数より大きい行をgrepしようとしています。この場合、その番号は755です。最終的に、私がやっていることは、755を使用してstat -c '%a %n' *よりも大きい(かつ等しくない)特権を持つすべてのファイルをリストし、次にgrep'ing(または場合によってはsed'ing)にパイプしようとしていますか? )この最終リストを取得します。これをどのように達成するのが最善かというアイデアはありますか?

23
user2150250

これを試して:

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)}'

繰り返しますが、ファイル名にスペースがないと仮定します。

26
Kent

私は awk(1) を使用します:

stat -c '%a %n' * | awk '$1 > 755'

awkパターンは、最初のフィールドが755より大きい行と一致します。行のサブセットまたは別の何かを印刷する場合は、アクションを追加できます(@Kentの回答を参照)。

6
Carl Norum

grepsedも算術が得意ではありません。 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部分は、ファイル名のみが必要な場合。

3
Lev Levitsky