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`?