Ordinamento per data


17

Originale:

23 gen 2011 10:42 QUALCOSA 2007.12.20.avi
26 giu 2009 QUALCOSA 2009.06.25.avi
12 febbraio 2010 QUALCOSA 2010.02.11.avi
29 gen 2011 09:17 QUALCOSA 2011.01.27.avi
11 febbraio 2011 20:06 QUALCOSA 2011.02.10.avi
27 feb 2011 23:05 QUALCOSA 2011.02.24.avi

Produzione:

27 feb 2011 23:05 QUALCOSA 2011.02.24.avi
11 febbraio 2011 20:06 QUALCOSA 2011.02.10.avi
29 gen 2011 09:17 QUALCOSA 2011.01.27.avi
23 gen 2011 10:42 QUALCOSA 2007.12.20.avi
12 febbraio 2010 QUALCOSA 2010.02.11.avi
26 giu 2009 QUALCOSA 2009.06.25.avi

Ho generato l'elenco sopra (originale) con:

ls -A -lR | grep "^-" | sed "s/.\{43\}/&\n/" | grep -v "^-" | while read ONELINE; do if echo $ONELINE | cut -d " " -f3 | grep -o '[0-9][0-9]:[0-9][0-9]' > /dev/null 2>&1; then echo $ONELINE | sed "s/.\{7\}/&$(date +%Y) /"; else echo $ONELINE; fi; done

Come posso ottenere l'output in cui il file più recente si trova nella parte superiore?


2
@ user4724: come hai generato l'elenco?

@utente4724: Questo non genera per me lo stesso tipo di erogazione, indipendentemente dal fatto che Gilles abbia la risposta

Risposte:


21

Sulla maggior parte dei computer, lsha -tun'opzione. Dalla manpagina del mio box Debian:

-t ordina per tempo di modifica

Prova il seguente comando:

$ ls -lt


ne ho bisogno ricorsivamente, scusa
LanceBaynes,

+ ls -lt elencherà una directory completa, se 1 file cambia in essa.
LanceBaynes,

14

È un file di testo che stai tentando di ordinare o stai cercando di visualizzare un elenco di directory per data? Per quest'ultimo, utilizzare la -tbandiera perls . Per il primo, vedi in particolare il -Mflag di ordinamento GNU, che ordina per abbreviazioni di nomi di mese di tre lettere. Il seguente comando ordina per la 3a, 1a, 2a e 4a colonna, trattando la seconda chiave di ordinamento come un nome di mese.

sort -k 3 -k 1M -k2 -k4 in.txt

Prendi sempre in considerazione l'uso di date in stile giapponese / ISO, sempre nell'ordine AAAA-MM-GG-HH-MM-SS (ovvero la prima più significativa, larghezza della colonna costante). In questo modo l'ordinamento per data è identico a un ordinamento lessicografico.


Non dimenticare gli zeri iniziali in quel suggerimento sul formato della data. Questo è il formato che utilizzo ogni volta che formatto la stringa da solo.
rubato

@stolenmoment Puoi usare gli spazi invece degli zeri se non ti dispiace gli spazi, il punto importante è una colonna costante con. 2018  5 26funziona altrettanto bene 2018 05 26(purché non si esegua il markup che unisce spazi consecutivi ...), ciò che non funziona bene è 2018 5 26.
Gilles 'SO- smetti di essere malvagio'

Sì, evito di riflesso gli spazi nei nomi dei file, sono sicuro che puoi indovinare il perché.
rubato

3

Non sono sicuro che la funzionalità fosse nel lscomando quando è stata posta la domanda originale, ma ora puoi usare l'opzione --full-time.

per esempio,

ls -t --full-time 

ordinerà con il tempo più vecchio in fondo; o se usi:

ls -tr --full-time

quindi invertirà l'ordine.


La domanda è su come ordinare i file per data / ora di modifica. L' -topzione risponde completamente a questa domanda; --full-timenon è davvero rilevante.
G-Man dice "Ripristina Monica" il

L'unica cosa -t opzione non ti dà l'anno per i file modificati entro sei mesi in cui --full-time ti dà esattamente questo. Puoi anche utilizzare lo stile temporale per formattare un formato data a tuo piacimento. es. ls -ltr - time-style +% Y-% m-% d \% H:% M:% S
Bevan Thomas

Non sono sicuro di quale sia il tuo punto.  ls -tnon ti dà nemmeno la modalità e il proprietario dei file, il nome host e la versione del sistema operativo o il prezzo del tè in Cina.  ls -tnon mostra nemmeno la data di modifica. Ma la domanda non riguarda la visualizzazione delle informazioni sui file, si tratta di ordinare i file per data di modifica. Non stai contribuendo alla risposta alla domanda; stai aggiungendo informazioni supplementari utili da conoscere. Quando ottieni 50 punti reputazione , puoi pubblicare quel tipo di informazioni come commento .
G-Man dice "Ripristina Monica" il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.