Respostas:
Por que não usar em stat
vez de ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, você pode adicionar largura informações para a cadeia de formato como função printf C, por exemplo "%y %8s %n"
, não está documentada, mas parece obras (coreutils 8.17, Fedora 18)
ls
eu posso produzir com um separador de mil caracteres. Como isso funciona stat
?
ls
. E as cores ??
Você pode obter muito controle sobre como listar arquivos com o find
utilitário. ls
realmente não permite que você especifique as colunas que deseja.
Por exemplo:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
O argumento para a printf
ação é detalhado na página de manual. Você pode escolher informações diferentes sobre o horário, qual o tamanho desejado (tamanho do arquivo ou blocos de disco usados), etc. Você também pode tornar isso seguro para nomes de arquivos incomuns, se for necessário um processamento adicional.
%C+
(saída "2016-08-29 + 10: 57: 56.9201257840") e %Cc
(saída "Mo 29 de agosto de 2016 10:57:56 CEST")
Você sempre pode usar outro utilitário, como awk
formatar a saída ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Sim, geralmente, você não deve analisar a saída de ls, mas, neste caso, a pergunta exige especificamente ...
ls
estiver com alias (digamos alias ls='ls -i'
). Você realmente deve tomar muito cuidado se quiser analisar a saída do ls.
ls
, mas é isso que o OP queria ...
/bin/ls
evitaria o problema de alias.) #
ls
qual ambos concordemos que não satisfará o requisito de espaço em branco. A /bin/ls
sugestão é boa.
-h
-lo para torná-lo legível por humanos. Especificamente eu usei: ls -lah | awk '{print $5,$6,$7,$8}'
que origina: 4.0K Jan 24 18:17
. É verdade que a solução original não diz nada sobre o awk, mas no linux devemos assumir que a saída de um processo sempre será a entrada para outro processo, certo? ;)
Você também pode usar o comando 'date'. É muito fácil de usar:
data -r [nome do arquivo]
date -r foo*.txt
->date: extra operand "foo2.txt"
onde o espaço é definido como o separador e f6 significa o campo 6
ls -lt | cut -d" " -f6-
Você pode canalizar dois comandos
ls -l|cut -d" " -f5
ls -s1 retorna o tamanho e o nome do arquivo apenas no AIX, não tem certeza sobre o Linux
ls
é excelente porque possui uma classificação muito rápida por data e hora, mas é difícil lidar com a formatação. Sugiro usar um token no estilo --time, como--time-style='+&%Y%m%d+%H%M%S.%N'
onde o token é '&', usando-o como referência, você poderá analisar ainda mais a saída,sed
para que você também possa voltar atrás como antes do tamanho do token! Se alguém quiser postar isso como uma resposta completa, sinta-se à vontade para, eu estou dormindo demais agora :) #