Como limitar a saída de ls para mostrar apenas nome do arquivo, data e tamanho?

25

Como posso usar lsno linux para obter uma lista apenas dos nomes de arquivos, data e tamanho? Não preciso ver as outras informações, como permissão do proprietário.

Pinkie
fonte
de qual Linux estamos falando?
tolitius
servidor apache ..

Respostas:

26

ls -l | awk '{print $5, $6, $7, $9}'

Isso imprimirá o tamanho do arquivo em bytes, mês, data e nome do arquivo.

jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 bar
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 baz
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 quux

jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
Jin
fonte
@Sukukudo Sim, também não tenho certeza. Mas as pessoas parecem concordar que não há problema em votar negativamente perguntas ruins, mas não as respostas, se forem úteis. Meta.stackexchange.com/questions/98197/…
Jin
@Sosukodo: sinta-se livre para votar agora :)
sehe
6
não há suporte para nomes de arquivos com espaços múltiplos
meso_2600
12

Tecnicamente, não é possível com ls, mas findpode fazer o mesmo trabalho com sua -printfopção:

find -maxdepth 1 -printf '%t %s %p\n'
thiton
fonte
1
Sua sugestão é minha vencedora, e eu recomendo que, se as pessoas estiverem interessadas em mais campos para a impressão, elas RTFM. Por exemplo, mostre-me as permissões para todos os arquivos que não são um diretório: find usr/lib/ -not -type d -printf '%M %p\n output: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Ensine um homem a pescar e tudo o mais ...
Craig
A pergunta é sobre o Linux, portanto não é uma resposta irracional, mas para o registro, isso requer a localização do GNU.
Dan Pritts
5

você sempre pode fazer:

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file1
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file2
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file3
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file4
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file5
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file6
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file7

cut para:

$ ls -l | cut -f 8-13 -d ' '

0 Oct  6 23:29 file1
0 Oct  6 23:29 file2
0 Oct  6 23:30 file3
0 Oct  6 23:30 file4
0 Oct  6 23:30 file5
0 Oct  6 23:30 file6
0 Oct  6 23:30 file7

$ 
tolício
fonte
4
não funciona com: propriedades variáveis, grupos, tamanhos de arquivo
meso_2600
O corte não recolhe delimitadores consecutivos, onde ls -lusa preenchimento de espaço em branco. Se suas colunas não tiverem um comprimento uniforme (qual coluna 5, o tamanho do arquivo geralmente não será), o cut não selecionará as colunas corretamente. O recolhimento de espaços consecutivos ajudará (cuidado com os espaços nos nomes dos arquivos). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave
4

Outro não lscaminho:

> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200         10485760    tmp.1           |
2017-06-15 10:41:25.659570000 +0200              666    tmp.TKPzm3BfRw  |

Explicação: %y= data de modificação legível por humanos; %s= tamanho em bytes ( %12salinhado à direita, comprimento 12); %n= nome do arquivo ( %-16nalinhado à esquerda, comprimento 16); \t= guia, \n= avanço de linha. |= literal pipe char, apenas para mostrar o final do nome do arquivo.

Como ls, statnão tem opções para selecionar quais arquivos mostrar. (Isso pode ser feito observando a concha, como mostrado acima ou alguns find ... -print0 | xargs -r0 stat ..., por exemplo.)

EndlosSchleife
fonte
A pergunta era sobre o linux, então sua resposta é boa, mas para quem se importa, aqui está um equivalente ao stat do FreeBSD. stat -f '%N %Sm %z' filename
Dan Pritts
2

Ligeira variação no tolitius

ls -lh | cut -f 6- -d ' '
zzapper
fonte
1
Gostaria de explicar o que a variação adiciona?
Ivo Flipse
Apenas remove a necessidade de especificar o número do campo final usando o 6- em vez de 6-x
ZZAPPER