web-dev-qa-db-ja.com

所有者とグループでlsを並べ替えるにはどうすればよいですか?

Lsを使用してディレクトリを一覧表示し、所有者とグループで並べ替えるにはどうすればよいですか?

9
AnnanFay

これを試して:

ls -l | awk '{print $3, $4, $8}' | sort

ファイル名にスペースが含まれていない場合は、ユーザー名、グループ名、およびファイル名が出力されます。または、次のように入力することもできます。

ls -l | awk '{print $3, $4, $0}' | sort

これにより、ユーザー名、グループ名、および完全なls -l出力が最初にユーザー名、次にグループ名、次にls -lが最初に出力されたものの順にソートされて出力されます。

ディストリビューションによっては、実際の列番号が異なる場合があることに注意してください。私はSUSEとcoreutilsバージョン5.2.1で私のものを試しました。

おそらくより優れた、より手の込んだ解決策がありますが、これは最も簡単な解決策であり、ほとんどの場合機能します。

8
petersohn

Petersohnが言ったように、次のようなものがあります。

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    プリティプリント用に$8column -tを追加しました

またはさらに良い:

  • ls -l | sort -k 3-所有者でソートし、デフォルトで次のフィールド(グループ)以降をソートします
  • ls -l | sort -k 4,4 -k 3-グループでソートしてから、所有者でソートします
  • ls -l | sort -k 3,3 -k 8-所有者、次にファイル名でソートします

注:コンマはターミネータフィールドであるため、3,3が開始してフィールド3で終了3,5はフィールド3から5にソートします。

7
vol7ron