ls
オプション--group-directories-first
により、ディレクトリが一番上に表示され、ls
の出力がきれいになります。
ls -l --group-directories-first
ただし、実際にはディレクトリに対してsymlinks
であるsymlinks
には作用しません。使用する可能性があります
ls -l -L --group-directories-first
これは両方の種類のディレクトリを一番上にリストしますが、適切なディレクトリとシンボリックリンクされたディレクトリを区別しません。これも混乱を招きます。
ls
は、通常のディレクトリと区別しながら、シンボリックリンクされたディレクトリを一番上に表示できますか?
編集:私はbash
を使用しています。
いいえ。ただし、zsh
を使用する場合は、次のことができます。
mll() {
(($#)) || set -- *(N-/) *(N^-/)
(($#)) && ls -ldU -- $@
}
次のようなグロブの並べ替え順序を定義することもできます。
dir1st() { [[ -d $REPLY ]] && REPLY=1-$REPLY || REPLY=2-$REPLY;}
そしてそれを次のように使用します:
ls -ldU -- *(o+dir1st)
そうすれば、ls
以外のコマンド、さまざまなオプションを使用したls
、または次のようなさまざまなパターンに使用できます。
ls -ldU -- .*(o+dir1st) # to list the hidden files and dirs
または:
ls -ldU -- ^*[[:lower:]]*(o+dir1st) # to list the all-uppercase files and dirs
bash
を使用する必要がある場合、同等のものは次のようになります。
mll() (
if (($# == 0)); then
dirs=() others=()
shopt -s nullglob
for f in *; do
if [[ -d $f ]]; then
dirs+=("$f")
else
others+=("$f")
fi
done
set -- "${dirs[@]}" "${others[@]}"
fi
(($#)) && exec ls -ldU -- "$@"
)
bash
には、グロブ修飾子やグロブの並べ替え順序に影響を与える方法、グロブごとにnullglobを有効にする方法、またはオプションのローカルコンテキスト(サブシェルの開始以外)がありません。 ()
の代わりに {}
上記)AFAIK。