Di solito la date +%d
restituisce l'output 08
per la data corrente, 08/10/2017. Ma quando eseguo ls -lrt
su un percorso, il formato della data è come Oct 8 15:03
, quindi, come ottengo i file della data corrente?
Sto usando il comando
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
ma non mi dà il file della data odierna (08/10/2017) anche se mi dà un output corretto per le date 10 - 31 di qualsiasi mese.
Risposta accettata:
Questo è un po' barare, ma funziona.
Per prima cosa crea un file di riferimento vuoto con un timestamp specifico, ovvero mezzanotte:
touch -d "$(date +%FT00:00:00)" /tmp/midnight
Quindi trova i file più recenti di questo file:
find . -type f -newer /tmp/midnight
Se vuoi ls
-come output da find
piuttosto che solo i nomi dei percorsi:
find . -type f -newer /tmp/midnight -ls
Se vuoi trovare i file che corrispondono al modello XYZ.LOG*
:
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
Se hai GNU find
, puoi ignorare il file temporaneo e utilizzare
find . -type f -newermt 0
per ottenere file modificati dalla mezzanotte.
Correlati:perché *non* analizza `ls`?