Como ocultar o tamanho do arquivo usando o comando ls

0

Eu preciso listar alguns arquivos em um diretório usando o comando ls , mas também preciso ocultar os tamanhos dos arquivos. Como posso fazer isso com o comando ls ?

    
por Fabio Paccosi 08.11.2013 / 20:47

2 respostas

2

Você pode mascará-lo usando awk :

$ ls -l | awk '{print $1, $2, $3, $4, $6, $7, $8, $9}'

Exemplo

$ ls -l|awk '{print $1, $2, $3, $4, $6, $7, $8, $9}' | head -5
total 172136      
drwxrwxr-x 2 saml saml Jan 16 2013 desktop-integration
-rw-r--r-- 1 saml saml Jan 16 2013 libobasis3.6-base-3.6.5.2-2.x86_64.rpm
-rw-r--r-- 1 saml saml Jan 16 2013 libobasis3.6-binfilter-3.6.5.2-2.x86_64.rpm
-rw-r--r-- 1 saml saml Jan 16 2013 libobasis3.6-calc-3.6.5.2-2.x86_64.rpm

Detalhes

O comando awk analisará automaticamente os dados em colunas, esse comando informará awk para imprimir todas as colunas, exceto a quinta, que é a coluna com as informações de tamanho contidas nela.

OBSERVAÇÃO: Eu não recomendaria fazê-lo dessa maneira, mas mostrarei a abordagem apenas para mostrar o conceito geral de como você pode analisar a saída de um comando no Unix, canalizando para outra ferramenta, como awk . O próximo método é a maneira preferida de resolver seu exemplo particular!

Exemplo de awk mais conciso

Graças a @val0x00ff nos comentários, há um método ainda mais eficiente para instruir awk a imprimir todas as colunas, exceto a quinta.

Exemplo

$ ls -l|awk '{$5=""; print}' | head -5
total 172136   
drwxrwxr-x 2 saml saml  Jan 16 2013 desktop-integration
-rw-r--r-- 1 saml saml  Jan 16 2013 libobasis3.6-base-3.6.5.2-2.x86_64.rpm
-rw-r--r-- 1 saml saml  Jan 16 2013 libobasis3.6-binfilter-3.6.5.2-2.x86_64.rpm
-rw-r--r-- 1 saml saml  Jan 16 2013 libobasis3.6-calc-3.6.5.2-2.x86_64.rpm

Detalhes

Neste método, estamos instruindo awk a apagar a quinta coluna definindo-a como uma string vazia, "" . Tudo o resto é deixado como está. Em seguida, informamos awk para imprimir a sequência resultante do que sobrou.

    
por 08.11.2013 / 21:05
0

De sua pergunta, presumo que sua chamada para ls seja um alias que inclua a opção -l . Assim, uma maneira seria usar ls sem a opção -l como indicado acima, por exemplo, chamando:

echo "call $(which ls)"
$(which ls)

Outra possibilidade é que você realmente deseja usar a opção -l , mas não quer ter uma saída diferente toda vez que os tamanhos dos arquivos mudarem, neste caso e somente se você não tiver arquivos acima de 1TB em tamanho você pode usar o seguinte comando, que oculta o tamanho real do arquivo, informando 1T para todos os arquivos e evita o uso de pipes e outros comandos:

ls -l --block-size=T

Claro que se você não se importar em usar um pipe e quiser usar awk , por favor use a solução postada por @slm graças a @val0x00ff:

ls -l | awk '{$5=""; print}'
    
por 01.03.2018 / 10:36

Tags