web-dev-qa-db-fra.com

Obtenir tous les fichiers modifiés à une date précise

Est-il possible de trouver tous les fichiers php dans un autre répertoire modifié à une certaine date

J'utilise

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

pour obtenir des fichiers modifiés dans les 28 derniers jours, mais je n'ai besoin que de fichiers modifiés à la date suivante: 2011-02-08

20
Elitmiar

Enfaitant, il n'y a aucune voie directe avec standard find. Versions récentes de find ON GNU Systems (par exemple, Linux non intégré, cygwin) et certains * BSDS ont options telles que -newermt Pour comparer une date de fichier avec une date d'épeautre .

Avec standard find, tout ce que vous pouvez faire est de comparer la date de fichier avec la date actuelle (-mtime) ou avec un fichier fixe. La date actuelle n'est généralement pas utile dans ce cas (elle compte à partir du moment où vous exécutez la commande find, alors que la plupart des applications nécessitent une date de calendrier). Cela vous laisse avec le kludge de créer des fichiers temporaires pour définir une gamme.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp

Vous avez presque la commande droite déjà, pour les versions de find qui ne vous permettra pas d'utiliser des dates:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

En général, pour find -n signifie moins de, -n signifie égal, + - n signifie "plus que". Traditionnel find a quelques exceptions près, mais GNU find et autres versions plus récentes telles que sur le BSD/Mac OS X corrigé ceux-ci. (Gardez cela à l'esprit si vous jamais trouvé sur un Solaris ou un autre système commercial UNIX.)

2
geekosaur