[script] Date fichier

Date fichier [script] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 01-04-2008 à 11:17:30    

bonjour,
 
sous linux je désirerai extraire le nom d'un ou plusieurs fichier modifier à la date d'aujourd'hui. comment puis-je :
     - lister le contenu d'un répertoire avec la date
     - analyser chaque date de fichier
     - retourner le/les fichier désiré
 
 
 
Merci
pour les infos que vous pourriez m'apporter...
 

Reply

Marsh Posté le 01-04-2008 à 11:17:30   

Reply

Marsh Posté le 01-04-2008 à 11:19:44    

avec find, regarde ses différentes options  dans le manpage [:spamafote]


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

Marsh Posté le 01-04-2008 à 15:03:46    

o'gure a écrit :

avec find, regarde ses différentes options  dans le manpage [:spamafote]

+1 :jap:
 
 
En plus, il y a plein de topics ici qui parlent de ça. Par exemple : http://forum.hardware.fr/hfr/OSAlt [...] 6447_1.htm


---------------
TriScale innov
Reply

Marsh Posté le 01-04-2008 à 15:08:37    

Merci cela m'a l'air bien puissant comme fonction...
 
par contre chui pas très bon en script comment de manière générale je peux récupérer et traiter ce que me retourne la fonction... car en console cela me renvoi :
.
./nom_fichier.ext  
./nom_fichier2.ext
 
comment récupérer dans 2 variable les 2 nom de fichier et ignorer le . en première ligne?
 
Merci

Reply

Marsh Posté le 01-04-2008 à 15:16:12    

Pour virer les répertoires, il existe d'autres options de find. Un petit tour dans la page de man t'en dira plus...
 
Par exemple :

find . -not -type d


 
Pour ce qui concerne la récupération des noms de fichiers et leur traitement ultérieur, si tu nous disais un peu ce que tu comptes faire ? La comme ça sans boule de cristal c'est un peu dur de deviner ;)


---------------
TriScale innov
Reply

Marsh Posté le 01-04-2008 à 15:43:01    

comment ça... t'as pas de boules de crystal.. :-p  
 
en fait je veux faire un find -cmin -10 qui va me renvoyer les fichiers modifiés depuis 10 minutes si j'ai bien compris. Ensuite je veux prendre ces fichiers les changer de répertoire  en ayant pris soint de supprimer le fichier equivalent si il y est dans le répertoire de destination.
 
donc en gros si je peux placer ce que me retourne find dans x variable  
fichier$ fichier1$ etc... le reste je devrais y arriver :-p

Reply

Marsh Posté le 01-04-2008 à 15:54:15    

got a écrit :

comment ça... t'as pas de boules de crystal.. :-p  
 
en fait je veux faire un find -cmin -10 qui va me renvoyer les fichiers modifiés depuis 10 minutes si j'ai bien compris. Ensuite je veux prendre ces fichiers les changer de répertoire  en ayant pris soint de supprimer le fichier equivalent si il y est dans le répertoire de destination.
 
donc en gros si je peux placer ce que me retourne find dans x variable  
fichier$ fichier1$ etc... le reste je devrais y arriver :-p

A priori, c'est pas une bonne idée de vouloir passer par N variables différentes si jamais tu devais avoir à scripter ça, il faudrait passer par une boucle, avec une variable qui prendrait successivement comme valeur les noms des fichiers à traiter.
 
Mais dans ton cas, c'est plus simple : tu devrais pouvoir faire ce que tu veux avec l'option -exec de find. Encore une fois, la page de man est ton amie...
 
 


---------------
TriScale innov
Reply

Marsh Posté le 01-04-2008 à 16:05:40    

oui je comptai bien passé par une boucle... mais je regarde du coté de exec même si le probleme est que je vais surement pouvoir effectué mon déplacement avec exec mais pas supprimer le fichier dans le répertoire de destination si il est deja présent... remarque peut être que mv fait l'écrasement je viens d'avoir un flash !!!

Reply

Marsh Posté le 01-04-2008 à 16:20:19    

sinon, tu peux mettre deux options -exec si tu veux faire deux actions sur le même fichier ;)


---------------
TriScale innov
Reply

Marsh Posté le 01-04-2008 à 16:28:40    

yes je vais essayer.. mais sinon une idée de comment je pourrais faire avec une boucle.. même si je l'utilise pas c'est pour ma culture perso ;-)
 
j'essai de faire un :  

Code :
  1. for i in 'find ./CASTRANS -cmin -10'
  2. do echo "le fichier est :  $i"
  3. done


 
pour comprendre comment ça marche mais non le find ne s'éxecute pas... une idée?

Reply

Marsh Posté le 01-04-2008 à 16:28:40   

Reply

Marsh Posté le 01-04-2008 à 16:51:51    

il faut mettre des backquotes (``) autour de ta commande find pour qu'elle s'exécute.
 
Pour protéger les espaces potentiels dans les noms de fichiers retournés par find, il faudrait plutôt utiliser 'read' plutôt qu'une bête boucle 'for i in'
 
Au final, ça fait un truc genre

find . | while read FILE
do
  echo $FILE
done


---------------
TriScale innov
Reply

Marsh Posté le 01-04-2008 à 17:03:15    

nickel ça va mieux comme ça...
 
Pendant que je te tiens ;-)
 
pour revenir sur fin et exec
j'essai ça :  

Code :
  1. find ./CASTRANS -cmin -10 -exec mv -f `{}` var/rep1/rep2/CASTRANS/ ;


et il me renvoi une erreur
find: missing argument to `-exec'
 
 
une idée lumineuse?
 
Merci pour tout :-)

Reply

Marsh Posté le 01-04-2008 à 19:05:05    

\;


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

Marsh Posté le 01-04-2008 à 19:17:36    

et pas `{}` mais '{}'


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

Marsh Posté le 02-04-2008 à 08:06:27    

Merci c'est tout bon...  
avec {} seul sans ' '  
Ce que je voulais faire marche avec les 2 méthode... soit find + exec soit find + boucle... ça m'aura appris pas mal de choses merci à vous 2 ;-)

Reply

Marsh Posté le 02-04-2008 à 08:47:11    

sinon tu as find et xargs [:god]


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

Marsh Posté le 02-04-2008 à 09:21:18    

o'gure a écrit :

sinon tu as find et xargs [:god]

[:nul] commence pas à donner pas de mauvaises habitudes de scripting aux nouveaux, toi [:klem3i1]


---------------
TriScale innov
Reply

Marsh Posté le 02-04-2008 à 10:59:03    

Je lui donne le choix seulement, il fait ce qu'il veut [:cosmoschtroumpf]


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

Sujets relatifs:

Leave a Replay

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