Como posso listar todos os arquivos e links simbólicos em uma visão compacta?

3

Esta é minha configuração em /tmp/test/

se eu usar 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

Se eu usar apenas ls , só vejo os arquivos sem detalhes:

a b c d e f

ls -F acrescenta um indicador (um de * / = > @ |) às entradas

a  b  c/  d@  e@  f@

Como posso conseguir essa exibição?

a  b  c/  d->c/  e->a  f->nofile
    
por rubo77 21.10.2013 / 04:32

3 respostas

0

uma solução simples com mais algumas informações:

ls -hago | column

também interessante (mas sem os links mostrados):
Isso mostrará todos os arquivos com tamanhos legíveis em colunas:

ls -sh

Esses comandos farão o trabalho:

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

ou

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

com a coloração funciona também, mas não parece tão ordenada:

if [ -t 1 ]; then color=yes; else color=no; fi
ls -hago --color="$color"| sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............//' | column
    
por 20.11.2013 / 15:13
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
    
por 01.11.2013 / 20:56
0

Se você armazenar em buffer a saída, poderá enviá-la para 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
    
por 20.11.2013 / 14:59

Tags