Listar apenas tamanho de arquivo e nome e links simbólicos

7

Quando uso ls -lah , recebo muitas informações para cada arquivo.

Como posso obter apenas o nome e tamanho do arquivo?

Além disso, gostaria de manter a listagem de links simbólicos com a seta como

lrwxrwxrwx  1 rubo77    rubo77       4 Nov 21 01:53 test2 -> test
    
por rubo77 21.11.2013 / 01:37

4 respostas

5

Selecionando colunas para imprimir com o awk

Um método seria analisar a saída de ls .

Exemplo

$ ls -lah | awk '{print $9, $5}' | tail -5
.yEd 4.0K
.youtube-dl 4.0K
.zenmap 4.0K
.zshrc 32
zzzz 3.3K

A propósito, você pode limpar a saída usando column .

$ ls -lah | awk '{print $9, $5}' | column -t | tail -5
z                                                   4
.youtube-dl                                         4.0K
.zenmap                                             4.0K
.zshrc                                              32
zzzz                                                3.3K

Selecionando colunas para remover com o awk

Se você preferir remover as outras colunas, mantendo outras você pode usar este método awk para apagar as colunas indesejáveis.

Exemplo

$ ls -lah | awk '{$1=$2=$3=$4=$6=$7=$8=""}1' | tail -5
    4.0K    .youtube-dl
    4    z -> zzzz
    4.0K    .zenmap
    32    .zshrc
    3.3K    zzzz

Solução eventual

O OP criou essa cadeia de comandos, usando uma mistura dos exemplos acima.

$ ls -lah | awk '{print $5, $9$10$11}' | column -t | column 
...
4.0K  .gphoto              773   .rdebug_hist     4.0K  .youtube-dl
1.5K  .grip                4.0K  .rdesktop        4     z->zzzz
    
por 21.11.2013 / 01:55
2

Da página do manual:

  -s, --size
          print the allocated size of each file, in blocks

Assim, para tamanhos legíveis por humanos:

ls -sh
    
por 21.11.2013 / 01:41
2

Uma maneira rápida e suja é combinar a saída de ls -lah com alguns outros comandos:

ls -lah | tr -s ' ' | cut -d' ' -f5,9-

O comando tr -s substitui vários espaços por espaços únicos e o cut -d' ' -f5,9- imprime as colunas 5 e 9 (e além). O 9- é necessário para considerar colunas separadas separadas por espaços produzidas por links simbólicos.

    
por 21.11.2013 / 01:41
1

O mais próximo que você pode obter com ls é suprimir as colunas de usuário e grupo com ls -log . Se você quiser ir mais longe, você pode analisar a saída. Tenha em atenção que a segunda coluna (a contagem de ligações) tem largura variável. O fragmento de shell a seguir cuida para preservar o alinhamento de colunas, lida com nomes de arquivos arbitrários (exceto newlines se forem passados literalmente) e exibe a saída em cores (remova essa parte se você não estiver executando o GNU coreutils). >

if [ -t 1 ]; then color=yes; else color=no; fi
ls -h -log --color="$color" | sed 's/^[^ ][^ ]* *[^ ][^ ]* \( *[^ ][^ ]*\) ............//'
    
por 21.11.2013 / 02:06

Tags