Risposte:
Perché non usare statinvece 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)
lsI 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' findutilità. lsnon 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 printfdell'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 awkformattare l'output di ls1 :
/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/lseviterebbe il problema dell'alias.)
lscui entrambi concordiamo non soddisferà il requisito degli spazi bianchi. Il /bin/lssuggerimento è buono.
-hper 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 insedmodo 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 :)