Come ottenere solo i file creati dopo una data con ls?


97

Con il lscomando è possibile mostrare solo i file creati dopo una data, un'ora ...?

Lo sto chiedendo perché ho una directory con migliaia di file.

Voglio quindi vedere tutti i file creati da ieri.

Uso ls -ltrma devo aspettare per vedere tutti i file ...

Esiste un equivalente di DIRECTORY/SINCE=dateOpenVMS?


1
lselenca i file, ma non offre molto per selezionare quali file elencare o il formato di output. Utilizzare globbing (caratteri jolly shell) o findquando si desidera selezionare i file per nome o metadati (ad es. Data).
Gilles,

3
Come è andata la data con ls? Avete colpito due?
Garrett Albright il

3
Con zsh:ls -1 -- *(.m-1)
don_crissti

Risposte:


123

È possibile utilizzare il findcomando per trovare tutti i file che sono stati modificati dopo un certo numero di giorni.

Ad esempio, per trovare tutti i file nella directory corrente che sono stati modificati da ieri (24 ore fa) utilizzare:

find . -maxdepth 1 -mtime -1

Nota che per trovare i file modificati prima di 24 ore fa, devi usare -mtime +1invece di -mtime -1.


3
La stessa cosa che avrei detto. Non c'è motivo di limitarti a lsqui, Luc.
Warren Young,

15
Con GNU find, ci sono altre possibilità. -mmin 5elenca i file modificati negli ultimi 5 minuti. -newermt "2011-02-27 13:42"elenca i file modificati dalla data specificata. Puoi usare -exec ls --color -ld {} +invece di -lsottenere il solito display a colori (se ti piace l'output colorato a sinistra).
Gilles,

4
Nota il segno meno:find . -mmin -5
user7543

e -maxdepth 1 può essere aumentato a qualsiasi valore n per cercare file anche a livello di sottodirectory
anshuman

3
per me funziona così: trova. -type f -newermt '15/01/2012 alle 18:09:00'
woohoo

15
find . -type f -newermt '1/30/2017 0:00:00'

Questo troverà tutti i file modificati dopo una data specifica.


1
ls -ltr | grep "`date | awk '{print $2" "$3}'`"

5
Ciao Trant! Mentre la tua soluzione è creativa nel tentativo di rispettare la richiesta della domanda di utilizzare ls, l'analisi dell'output di ls è raramente sicura (ad esempio, cosa succede con i nomi di file tra cui le nuove righe qui?), E ci piace che le risposte non siano solo una- fodere, ma piuttosto per spiegare come funzionano nel modo più dettagliato possibile.
Dhag,

1
Problemi: (1) Sul mio sistema, datedice Jun 03, ma lsdice Jun  3, quindi non funziona. (2) Una settimana fa, la data era il 27 maggio. I  ls -l | grep "May 27"file sarebbero stati modificati quel giorno, ma anche i file modificati il ​​27 maggio di ogni altro anno - e i file con "27 maggio" nel loro nome. (E se si pensa che è una preoccupazione del tutto fasulla, guardare in alto “10 dicembre” .) (3) E, se sei riuscito a ottenere dateda dire Jun 2, grep per trovare che Jun 20attraverso Jun 29, ma non Jun  2(con due posti). ... (proseguendo)
G-Man il

1
(Continua) ... (4) L'OP stava utilizzando ls -ltrper ottenere i file modificati più di recente alla fine dell'elenco. Se stai pianificando una data, non è necessario farlo (tranne per ottenere i file del 27 maggio 2015 alla fine dell'elenco, dopo i file del 27 maggio 2014, 27 maggio 2013, ecc.). (5) In awk, print $2, $3è equivalente a print $2" "$3ed è molto più facile da leggere, specialmente quando ci sono altri tre livelli di virgolette.
G-Man il

ls -ltr | grep "$(date | awk '{print $2,$3}')"
SergioAraujo,

0

Spero che funzioni:

ls -ltr | awk '$6 == "May" && $7 >=01 && $7 <= 31 {print $9}'

Qui:

$6 indicates position of month
$7 indicates day of the month

questo comando sopra stampa tutti i nomi dei file che vengono creati dal 1 maggio al 31 maggio o successivamente

se si desidera stampare anche la data sulla console, provare questo

ls -ltr | awk '$6 == "May" && $7 >=01 && $7 <= 31 {print $6"-"$7,$9}'

Se si desidera specificare il percorso della directory, è possibile provarlo

ls -ltr <path>| awk '$6 == "May" && $7 >=01 && $7 <= 31 {print $6"-"$7,$9}'

Per molte ragioni, non è una buona idea analizzare l' lsoutput. E non tutti parlano inglese :-)
Luc M
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.