所有者とグループでlsをソートするにはどうすればよいですか?


回答:


8

これを試して:

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で試してみました。

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


1
s /行番号/列番号/
追って通知があるまで一時停止。

7

petersohnが言ったように、次のようなもの:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    プリティプリント用に$8とを 追加しましたcolumn -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に並べ替えます。


グループ別、次に所有者別に並べ替えるには、-bを追加して先頭の空白を無視する必要があります。そうしないと、リストは所有者名の文字列の長さで並べ替えられます。
ステファンシュミット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.