Risposte:
Perché non usare stat
invece di ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, è possibile aggiungere informazioni sulla larghezza alla stringa di formattazione come la funzione C printf, ad esempio "%y %8s %n"
, non è documentata, ma sembra funzionare (coreutils 8.17, Fedora 18)
ls
I riesco ad emetterlo con un carattere di mille separatori. Come funziona stat
?
ls
. E i colori ??
Puoi ottenere un sacco di controllo su come elencare i file con l' find
utilità. ls
non ti consente di specificare le colonne che desideri.
Per esempio:
$ 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
L'argomento printf
dell'azione è dettagliato nella manpage. Puoi scegliere diverse informazioni temporali, quali dimensioni vuoi (dimensioni del file o blocchi del disco utilizzati), ecc. Puoi anche renderle sicure per nomi di file insoliti se è necessaria un'ulteriore elaborazione.
%C+
(output "29-08-2016 + 10: 57: 56.9201257840") e %Cc
(output "Lu 29 ago 2016 10:57:56 CEST")
Puoi sempre usare un'altra utility come awk
formattare l'output di ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Sì, in generale, non dovresti analizzare l'output di ls ma in questo caso la domanda lo richiede specificamente ...
ls
è alias (diciamo alias ls='ls -i'
). Dovresti davvero fare molta attenzione se vuoi analizzare l'output.
ls
, ma è quello che voleva l'OP ...
/bin/ls
eviterebbe il problema dell'alias.)
ls
cui entrambi concordiamo non soddisferà il requisito degli spazi bianchi. Il /bin/ls
suggerimento è buono.
-h
per renderle leggibili dall'uomo. Specificamente ho usato: ls -lah | awk '{print $5,$6,$7,$8}'
da cui si ricava: 4.0K Jan 24 18:17
. Certo, la soluzione originale non dice nulla su awk, ma in Linux dovremmo supporre che l'output di un processo sarà sempre l'input per un altro processo, giusto? ;)
Puoi anche usare il comando 'date'. È molto facile da usare:
data -r [nome file]
date -r foo*.txt
->date: extra operand "foo2.txt"
Se si desidera utilizzare ls, ma conservare le dimensioni appropriate, è possibile utilizzare:
ls -Ss1pq --block-size=1
dove spazio è definito come separatore e f6 significa campo 6
ls -lt | cut -d" " -f6-
È possibile eseguire il pipeline di due comandi
ls -l|cut -d" " -f5
ls
è fantastico perché ha un ordinamento molto veloce in base al datetime, ma la formattazione è difficile da gestire. Suggerisco di usare un token in --time-style come--time-style='+&%Y%m%d+%H%M%S.%N'
dove il token è '&', usando quello come riferimento è possibile analizzare ulteriormente l'output insed
modo da poter tornare indietro come appena prima che il token abbia le dimensioni! Se qualcuno vuole pubblicarlo come risposta completa, sentiti libero di farlo, sto dormendo troppo adesso :)