Généralement la date +%d
donne la sortie 08
pour la date actuelle, 08/10/2017. Mais quand je fais le ls -lrt
sur un chemin, le format de date est comme Oct 8 15:03
, alors, comment puis-je obtenir les fichiers de la date actuelle ?
J'utilise la commande
ls -lrt XYZ.LOG* |grep "$(date +'%b %d')" |awk '{print $9}'
mais il ne me donne pas le fichier de la date d'aujourd'hui (08/10/2017) bien qu'il me donne une sortie correcte pour les dates du 10 au 31 de n'importe quel mois.
Réponse acceptée :
C'est un peu tricher, mais ça marche.
Créez d'abord un fichier de référence vide avec un horodatage spécifique, à savoir minuit :
touch -d "$(date +%FT00:00:00)" /tmp/midnight
Recherchez ensuite les fichiers plus récents que ce fichier :
find . -type f -newer /tmp/midnight
Si vous voulez ls
-like sortie de find
plutôt que juste les noms de chemin :
find . -type f -newer /tmp/midnight -ls
Si vous voulez trouver des fichiers correspondant au modèle XYZ.LOG*
:
find . -type f -name 'XYZ.LOG*' -newer /tmp/midnight -ls
Si vous avez GNU find
, vous pouvez contourner le fichier temporaire et utiliser
find . -type f -newermt 0
pour obtenir des fichiers modifiés depuis minuit.
En relation :Pourquoi *ne pas* analyser `ls` ?