filtrer les fichiers plus vieux qu'un jour (solaris)

filtrer les fichiers plus vieux qu'un jour (solaris) - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-08-2008 à 09:55:39    

bonjour,
je travaille sur un serveur solaris et je dois travailler sur des fichiers d'un dossier, seulement je ne dois prendre que les fichiers créés (ou modifiés) de moins d'un jour.
je pensais récupérer la date du fichier et la comparer avec la date du jour (en utilisant le nombre de secondes depuis 1970)
seulement la fonction date ne fonctionne pas avec l'argument %s (qui permet de récupérer ce nombre de secondes)
 
de plus pour récupérer la date du fichier je ne sais pas trop comment faire, j'ai trouvé un script perl, qui permet apparement d'obtenir les dates en secondes (description très vague, donc je ne comprend pas trop ce qu'il me retourne)

perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];print "$atime, $mtime, $ctime\n";' file_name


 
merci de votre aide


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 09:55:39   

Reply

Marsh Posté le 01-08-2008 à 10:05:41    

Regarde le manpage de find (version solaris) pour faire ça de manière plus simple.


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-08-2008 à 10:43:37    

j'ai effectivement trouvé ça
find $mon fichier -atime -1
mais avec touch j'ai modifier la date de mes fichiers pour tester et ceux qui datent du 30 juillet apparaissent quand même...


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 10:50:00    

atime c'est pas ce qu'il te faut... c'est mtime :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-08-2008 à 11:32:08    

d'accord est ce que tu sais à quoi cela correspond?
merci
 
au passage le find me fait des trucs bizzard, est ce que c'est possible qu'il se base sur une date de consultation du fichier plutôt qu'une date de modification?

Message cité 1 fois
Message édité par dams78 le 01-08-2008 à 11:32:18

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 13:24:41    

oui, car j'ai lu le man de find.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-08-2008 à 13:43:33    

black_lord a écrit :

oui, car j'ai lu le man de find.


moi aussi je te rassure, mais le find nous fait vraiment des trucs bizzare
je vais creuser du côté du perl alors
 
--
edit, je suis entrain de chercher, mais peut être que vous savez comment récupérer le nombre de secondes écoulées depuis 1970 en perl?
comme ça je le soustrai à $ctime et c'est bon :)
 
--
reedit : perl -e 'print time;'

Message cité 1 fois
Message édité par dams78 le 01-08-2008 à 13:53:38

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 13:54:02    

dams78 a écrit :

d'accord est ce que tu sais à quoi cela correspond?
merci

 

au passage le find me fait des trucs bizzard, est ce que c'est possible qu'il se base sur une date de consultation du fichier plutôt qu'une date de modification?

 
dams78 a écrit :


moi aussi je te rassure, mais le find nous fait vraiment des trucs bizzare
je vais creuser du côté du perl alors


http://www-inf.int-evry.fr/cours/U [...] ind.1.html

Citation :

-atime n
    dernier acces au fichier il y a n*24 heures.


Citation :

-mtime n
    Fichier dont les donnees ont ete modifiees il y a n*24 heures.


[:spamafote]
Non il n'a pas un comportement bizarre.


Message édité par o'gure le 01-08-2008 à 13:54:33

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 01-08-2008 à 13:59:06    

j'ai trouvé ça :
perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];$ctime=time-$ctime;print "$ctime";' fichier


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 14:01:07    

en fait si j'utilise le find cela plante sur notre serveur de préprod, donc je pense utiliser la fonction perl et faire un test pour chaque fichier
 
merci de votre aide en tout cas


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 01-08-2008 à 14:01:07   

Reply

Marsh Posté le 01-08-2008 à 14:01:40    

réinventer la roue plutôt que de trouver pourquoi ça plante [:prozac]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-08-2008 à 14:09:52    

on fait au plus pressé surtout...
pour info je peux vous mettre mon script :

Code :
  1. #/bin/sh
  2. if [ $# = "2" ]
  3. then
  4. rm $2/*
  5. ls -tr $1 | while read file
  6. do
  7.  secondes=`perl -e '($atime,$mtime,$ctime)=(stat($ARGV[0]))[8..10];$ctime=time-$ctime;print "$ctime";' $1/$file`
  8.  if [ $secondes -lt 86400 ]
  9.  then
  10.   newFile=`echo "$file" | awk -F'-' '{ print $1 }' | awk -F'.' '{ print $1 }'`
  11.   cat $1/$file >> $2/$newFile
  12.   touch -r $1/$file $2/$newFile
  13.  fi
  14. done
  15. else
  16. echo "premier parametre : dossier des fichiers a concatener"
  17. echo "deuxieme parametre : dossier de sortie"
  18. fi


le find se trouvait après le ls (qui permet d'avoir les fichiers dans l'ordre de création) on a supposé que c'était à cause de ça


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 02-08-2008 à 12:01:59    

Ben find est pas censé prendre une liste de fichiers en argument, mais un ou plusieurs repertoires où faire ses recherches.
Qui plus est il les prends en ligne de commande, et non pas sur l'entrée standard, alors faut pas s'étonner si un ls machin/ | find ... plante [:ddr555]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed