--group-directories-firstを使用する場合、ディレクトリへのソフトリンクをディレクトリとグループ化する簡単な方法はありますか?

--group-directories-firstを使用する場合、ディレクトリへのソフトリンクをディレクトリとグループ化する簡単な方法はありますか?

私は--group-directories-first旗が好きですls。私の.zshrcには次の行があります。

alias ls="ls -h --color='auto' --group-directories-first"

私が嫌いな唯一のことは、ディレクトリへのシンボリックリンクがディレクトリとグループ化されていないことです。

lsディレクトリへのシンボリックリンクをディレクトリとグループ化するためにコマンドに追加できるスイッチはありますか?私はls追加のスイッチを動的に追加するのが好きなので、複合コマンドを書くのは嫌です。

ベストアンサー1

1つのオプションは、次のフラグを使用することです-L

-L、--逆参照

シンボリックリンクに関するファイル情報を表示すると、リンク自体ではなくリンクが参照するファイルに関する情報が表示されます。

たとえば、次のファイルとディレクトリがあるとします。

$ ls -l --group-directories-first
total 0
drwxr-xr-x. 2 user group 6 Nov 30 08:19 zdir1
drwxr-xr-x. 2 user group 6 Nov 30 08:19 zdir2
-rw-r--r--. 1 user group 0 Nov 30 08:20 file1
-rw-r--r--. 1 user group 0 Nov 30 08:20 file2
lrwxrwxrwx. 1 user group 5 Nov 30 08:23 symlink -> zdir2

-Lシンボリックリンクは使用時にディレクトリと並べ替えられます。

$ ls -lL --group-directories-first
total 0
drwxr-xr-x. 2 user group 6 Nov 30 08:19 symlink
drwxr-xr-x. 2 user group 6 Nov 30 08:19 zdir1
drwxr-xr-x. 2 user group 6 Nov 30 08:19 zdir2
-rw-r--r--. 1 user group 0 Nov 30 08:20 file1
-rw-r--r--. 1 user group 0 Nov 30 08:20 file2

ご存知のように、lsファイルがシンボリックリンクかどうかは表示されなくなります。私はlsシンボリックリンクを逆参照して表示する方法に慣れていませんが、これを行うためにハッキングされたbash関数を書いています。

lsd() {
        ls -lL --group-directories-first | while read line; do
                file=$(echo "$line" | awk '{print $NF}')
                ls -ld "$file" 2>/dev/null | grep -q "^l"
                if [ $? -eq 0 ]; then
                        symlink=$(ls -l $file | awk '{print $(NF-2),$(NF-1),$NF}')
                        echo "$line" | sed -e "s/^./l/" -e "s/$file/$symlink/"
                else
                        echo "$line"
                fi
        done
}

デフォルトでは、スクリプトはファイル出力がls -lL --group-directories-firstシンボリックリンクであることを確認します。その場合、最初の文字が次に変更され、lシンボリックリンクが指す内容が行の末尾に追加されます。

$ lsd
total 0
lrwxr-xr-x. 2 user group 6 Nov 30 13:49 symlink -> zdir2
drwxr-xr-x. 2 user group 6 Nov 30 13:49 zdir1
drwxr-xr-x. 2 user group 6 Nov 30 13:49 zdir2
-rw-r--r--. 1 user group 0 Nov 30 13:49 file1
-rw-r--r--. 1 user group 0 Nov 30 13:49 file2

おすすめ記事