4 votes

Comment lister les fichiers par intervalle de dates ?

Je voudrais répertorier les dossiers qui ont 3 jours d'ancienneté. J'ai trouvé celui-ci à stackoverflow :

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort | cut -f 2- -d ' ' | grep 2012

Mais je ne comprends pas le sens de cette commande. Je me demande s'il existe quelque chose de court et de simple à comprendre.

6voto

RedGrittyBrick Points 78148

Cela devrait fonctionner

find . -type f -mtime -3

Explication

find         find files
.            starting in the current directory (and it's subdirectories)
-type f      which are plain files (not directories, or devices etc)
-mtime -3    modified less than 3 days ago

Voir man find pour plus de détails


Update

Pour trouver les fichiers modifiés en dernier lieu avant une date et une heure spécifiques (par exemple, 08:15 le 20 février 2013), vous pouvez procéder comme suit

  touch -t 201302200815 freds_accident
  find . -type f ! -newer freds_accident
  rm freds_accident

Voir man touch (ou info touch - ugh !)

C'est modérément horrible et il y a peut-être un meilleur moyen. L'approche ci-dessus fonctionne sur les Unix anciens et non-GNU ainsi que sur les Linux actuels.

0voto

Trouver des intervalles de support avec les arguments -ctime et -mtime +/-.

par exemple

$ for y in {07..14};do \
  for m in {01..12};do \
  for d in {01..30};do \
    touch -t 20$y$m${d}0101 $y$m$d.file ;done;done;done

$ find . -mtime +0 -mtime -$(( 3 * 365 + 3 )) |sort 
./100304.file
./100305.file
./100306.file
(...)
./130302.file
./130303.file
./130304.file

Si vous voulez des fichiers créés dans un intervalle compris entre 3 ans et 3 jours et une semaine, vous utiliserez -mtime +7 -mtime -1098.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X