La commande find

Fermé
drole2mec Messages postés 28 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 9 avril 2012 - 6 oct. 2011 à 16:12
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 6 oct. 2011 à 18:06
Bonjour,

pourriez vous m'aidez ?

Je dois chercher des fichier ".dat" qui date de plus de un mois dans un répertoire, et les déplacer vers un autre.


ma commande est la suivant, mais elle est fausse:

find . -name "*.dat" -mtime +30 -exec mv * /root/toto/2 {} \;


Repertoire source: repertoire courant.
repertoire de destination : /root/toto/2

Merci d'avance.

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 411
6 oct. 2011 à 16:15
Salut,

find . -name "*.dat" -mtime +30 -exec mv {} /root/toto/2 \; 

1
drole2mec Messages postés 28 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 9 avril 2012 1
6 oct. 2011 à 17:04
Merci beaucoup, c'est bien cela.

ci dessous le mini script que j'ai crée pour une utilisation quotidienne. il me manque la création de la log traçant le déroulement de ces opérations si vous pouvez m'aider à ce sujet.

__________

#!/bin/sh


REP=/root/toto/test
DEST=/root/toto/2
ARCH=/root/toto/3
DATE='date "+%d%m%y"'


find $REP -name "*.dat" -mtime -1 -exec mv {} $DEST \;
cd $DEST
tar cvf archive_$DATE.tar *
gzip archive_$DATE.tar
mv *.tar.gz $ARCH
cd $DEST
rm *


_______

Merci d'avance.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 411
6 oct. 2011 à 17:46
Il suffit de rediriger la sortie du script dans un fichier :

./script.sh | tee fich.log


Par contre il faut rajouter les options de sortie verbeuse à chaque commande et éventuellement des "echo" avant chaque commande...

#!/bin/sh

REP=/root/toto/test
DEST=/root/toto/2
ARCH=/root/toto/3
DATE='date "+%d%m%y"'


find $REP -name "*.dat" -mtime -1 -exec mv -v {} $DEST \;
cd $DEST
tar cvf archive_$DATE.tar *
gzip -v archive_$DATE.tar
mv -v *.tar.gz $ARCH
#cd $DEST # (ça c'est inutile on y est déjà dans le répertoire)
rm -vf * 
0
drole2mec Messages postés 28 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 9 avril 2012 1
6 oct. 2011 à 18:02
Merci pour tes remarques,

Cependant, je voulais intégrer ce script dans un ordonnanceur.
Donc je préfère mettre le tout dans un seul script s'il y a moyen.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 411
6 oct. 2011 à 18:06
#!/bin/sh

exec > /chemin/fich.log

REP=/root/toto/test
DEST=/root/toto/2
ARCH=/root/toto/3
DATE='date "+%d%m%y"'


find $REP -name "*.dat" -mtime -1 -exec mv -v {} $DEST \;
cd $DEST
tar cvf archive_$DATE.tar *
gzip -v archive_$DATE.tar
mv -v *.tar.gz $ARCH
#cd $DEST # (ça c'est inutile on y est déjà dans le répertoire)
rm -vf * 


Cependant, je voulais intégrer ce script dans un ordonnanceur
Par contre il te faudra donner les chemins absolus de chaque commande sans quoi...
0