Le Blog de Richard Goutorbe, consultant informatique à Montpellier  Le Blog de Richard Goutorbe, consultant informatique à Montpellier
http://www.montpellier-informatique.com/blog

Index

.

Une commande Unix pour lister les fichiers récemment modifiés dans une arborescence

On a souvent besoin de lister les fichiers qui ont été modifiés depuis une date donnée dans un répertoire et ses sous-répertoires, pour les sauvegarder ou pour les transférer. Comme on ne peut pas le faire avec la commande "ls" habituelle, il faut utiliser la commande "find", dont les arguments sont plutôt compliqués. J'ai écrit un shell script qui enveloppe cette commande, et qui permet d'obtenir cette liste de fichiers modifiés très simplement. Il fonctionne sous Unix (HP-UX) et sous Linux (Ubuntu).

Le fichier de commande dirchanges.sh :

#!/bin/sh # dirchanges.sh - Lister par ordre alphabetique tous les fichiers du repertoire courant, # modifies depuis le nombre de jours specifie # arg1: nombre de jours (defaut=1) # arg2: optionnel, masque pour filtrer la liste # # 21-08-2009 Richard Goutorbe # http://www.montpellier-informatique.com/ # Ce code peut etre reproduit librement a condition que cette entete # soit preservee. Tout changement apporte au code original doit etre signale clairement. # This code may be freely distributed as long as this header # is preserved. Changes to the code should be clearly indicated.

FTMP=/tmp/dirchanges.sh.$$.tmp DAYS=1

if [ -n "$1" ] ; then

	DAYS=$1

fi find . -type f -mtime -$DAYS -printf '%-40p\tCmCHCS\t%6s bytes\n'|sort > $FTMP if [ -n "$2" ] ; then

	grep "$2" $FTMP

else

	cat $FTMP

fi rm $FTMP

Son utilisation est très simple :

  • Aller dans le répertoire à lister et taper dirchanges.sh pour voir les fichiers modifiés dans la journée.
  • Pour voir les fichiers modifiés depuis un certain nombre de jours taper dirchanges.sh ce_nombre.
    Par exemple: dirchanges.sh 2 pour lister les fichiers modifiés depuis 2 jours.
  • Pour ne voir que les fichiers dont le nom correspond à un certain masque, taper ce masque après le nombre de jours (entre des apostrophes).
    Par exemple: dirchanges.sh 2 '*.txt' pour lister les fichiers textes modifiés depuis 2 jours.

Exemple de liste produite par dirchanges.sh :

 ./htdocs/blog/wiki.d/.flock                            20090821T100851      0 bytes 
 ./htdocs/index.htm                                     20090820T150029   9417 bytes 
 ./htdocs/predator/en/ico/newversion.png                20090820T115719   8216 bytes 
 ./htdocs/predator/en/wiki.d/.flock                     20090821T101422      0 bytes 
 ./htdocs/predator/en/wiki.d/Main.HomePage              20090820T115735   4100 bytes 
 ./htdocs/predator/en/wiki.d/Main.RecentChanges         20090820T115735   1909 bytes 
 ./htdocs/predator/en/wiki.d/Site.AllRecentChanges      20090820T115747   1980 bytes 
 ./htdocs/predator/fr/ico/newversion.png                20090820T120350   7583 bytes 
 ./htdocs/predator/fr/wiki.d/.flock                     20090821T100154      0 bytes 
 ./htdocs/predator/fr/wiki.d/Main.HomePage              20090820T120404   6909 bytes 
 ./htdocs/predator/fr/wiki.d/Main.RecentChanges         20090820T120404   1694 bytes 
 ./htdocs/predator/fr/wiki.d/Site.AllRecentChanges      20090820T120416   1837 bytes 
 ./logs/www.montpellier-informatique.com-access.log     20090821T101641 58703264 bytes 
 ./logs/www.montpellier-informatique.com-error.log      20090821T091853 706930 bytes 

A voir aussi :

J'ai écrit une commande équivalente pour Windows:
 
Page last modified on August 21, 2009, at 11:00 AM