圧縮ビューですべてのファイルとシンボリックリンクを一覧表示するには?

圧縮ビューですべてのファイルとシンボリックリンクを一覧表示するには?

これは私の設定です。/tmp/test/

私が使うならls -l

-rw-r--r--  1 rubo77 rubo77    0 Okt 21 04:15 a
-rw-r--r--  1 rubo77 rubo77    2 Okt 21 04:16 b
drwxr-xr-x  2 rubo77 rubo77 4,0K Okt 21 03:58 c
lrwxrwxrwx  1 rubo77 rubo77    1 Okt 21 03:57 d -> c
lrwxrwxrwx  1 rubo77 rubo77    1 Okt 21 03:58 e -> a
lrwxrwxrwx  1 rubo77 rubo77    2 Okt 21 03:59 f -> nofile

今使用する場合:詳細lsなしでファイルのみが表示されます。

a b c d e f

ls -Fアイテムにインジケータ(*/=>@|のいずれか)を追加します。

a  b  c/  d@  e@  f@

このディスプレイをどのように取得できますか?

a  b  c/  d->c/  e->a  f->nofile

答え1

#!/bin/bash

    ls -l | while read response
        do
            words=`echo $response | wc -w`      #count how many words are

            case "$words" in
                9) echo $response | cut -d " " -f9 # when file is not a symlink then the ouput prints only 9 fields
                    ;;
               11) echo $response | cut -d " " -f9-11 # when file is symlink its prints 11 fields indicating the target and symbol "->"
                   ;;
            esac
        done

答え2

出力をバッファリングしている場合は、次のように送信できますcolumn

#!/bin/bash
TMP=/tmp/output-buffer
echo "">$TMP
ls -l | while read response
    do
        words=`echo $response | wc -w`

        case "$words" in
            9) echo $response | cut -d " " -f9 >>$TMP
                ;;
           11) echo $response | cut -d " " -f9-11 >>$TMP
               ;;
        esac
    done
cat $TMP | column
rm $TMP

答え3

より多くの情報を含む簡単な解決策:

ls -hago | column

また興味深いです(リンクは表示されません)。
これは、人間が読めるサイズのすべてのファイルを列に表示します。

ls -sh

次のコマンドが操作を実行します。

ls -lah | awk '{print $5, $9$10$11}' | column -t | column

または

ls -hago --color=no| sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/' | column

色を使用することも効果がありますが、あまり整理されていないようです。

if [ -t 1 ]; then color=yes; else color=no; fi
ls -hago --color="$color"| sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............/\1/' | column

関連情報