クラス/インジケータ(例:ls --classify)と名前でファイルを一覧表示するにはどうすればよいですか?

クラス/インジケータ(例:ls --classify)と名前でファイルを一覧表示するにはどうすればよいですか?

ls --clasify*/=>@|アイテムにインジケータ(いずれか)を追加します。同じカテゴリ/測定項目の項目をグループ化したいと思います。

ls --group-directories-firstグループ化してのみ見つけることができますが/実行可能ファイル*、シンボリックリンク@、パイプ、ソケットを|グループ化する方法は=

lsはいいいえ必須です。汚いハッカーなら誰でも歓迎します。ただし、出力スタイルについては、実行した操作と同様に、インジケータ付きの多列カラー出力が必要ですls -C --color -F

ベストアンサー1

ls -CFUd同じものを使うムルただし、zsh次のことを試すことができます。

(set -o nullglob; ls --color -CFUd -- *(/) *(*) *(@) *(p) *(=) *(^/*@p=))

(...)どこグローバル予選ディレクトリ、実行可能ファイル、シンボリックリンク、パイプ、ソケット、その他すべてに一致します。

bytypeソート機能を次のように定義することもできます。

zmodload -F zsh/stat b:zstat
bytype() {
  local mode order=(d l p s b c)
  zstat -sLA mode +mode -- $REPLY
  REPLY=$order[(ie)${mode[1][1]}]$REPLY
}
ls --color -CFUd -- *(o+bytype)

これはパターンテキスト表現の最初の文字(ls -l出力の最初のフィールド)に基づいてソートされるため、-通常のファイル、lシンボリックリンクなどの場合は配列でランク付けされます$order

実行ファイルはファイル形式ではないため、特に扱われません。ls -Fまたは glob 修飾子の場合、*実行可能ファイルは次のようになります。定期的な権限に1つ以上の実行ビットが設定されているファイル(あなた実行権限があるため、次の方法で処理できます。

zmodload -F zsh/stat b:zstat
bytype() {
  local mode order=(d '*' l p s b c)
  zstat -sLA mode +mode -- $REPLY
  if [[ $mode = -*[xts]* ]] mode=('*')
  REPLY=$order[(ie)${mode[1][1]}]$REPLY
}

おすすめ記事