La commande find

drole2mec Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

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

    1
  2. drole2mec Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  3. drole2mec Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   1
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      #!/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