IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unix Discussion :

[UNIX] recherche de fichier


Sujet :

Unix

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut [UNIX] recherche de fichier
    Bonjour,

    je travaille a partir d'anciens repertoires que m'ont laisse mes predecesseurs. Je dois reccuperer un groupe de fichiers du genre nom1*, nom2* etc parmi un grand nombre de repertoires et de sous repertoires.

    Les fichiers en question sont ou non presents.. Comment faire pour copier seulement les fichies en question a un autre endroit mais en conservant le nom des repertoires et leurs arborescence. Accessoirement si le repertoire et aucun de ses sous repertoires ne contiennent l'un des fichiers il ne m'interesse pas.

    Dans l'idee je saurais faire mais je ne connais presque pas unix.
    Une biere bien fraiche par chronopost a mon sauveur

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /répertoire/base \( -name "nom1*" -o -name "nom2*" \) -exec ~/copie_speciale.sh /répertoire/cible {} \; -print
    ~/copie_speciale.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/sh
     
    # Paramètre 1 : le répertoire de base pour la copie
    # Paramètre 2 : le chemin complet du fichier à copier
     
    if [ $# = 2 -a -d $1 ];
    then
            destrep=${1%/}`dirname $2`
            mkdir -p $destrep
            cp $2 $destrep
    fi
    Je crois que l'idée est là

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    Merci pour ta rapidite

    ca ne marche pas !

    Deja je dois preciser que je tourne avec ksh (je sais pas si ca change quelquechose...).
    Je me suis donc permis de remplacer sh en ksh dans le script...

    Le message d'erreur est le suivant
    find : bad option nomdefichier2
    .

    Sinon j'ai essaye de faire marcher le script copie_speciale a la main sur un ou deux repertoires. Il cree les repertoires mais ne copie pas les fichiers voulus dedans ?!

    Quel est le probleme : moi ou la machine ?

  4. #4
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Citation Envoyé par julp
    Je crois que l'idée est là
    Il t'a donné l'idée, faut chercher un peu soi même aussi
    Grave urgent !!!

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Désolé j'ai oublié une option -name lorsque j'ai recopié la commande (je n'étais pas sur la même machine). Vous avez nécessairement un shell /bin/sh qui peut en réalité en désigner un autre qui est compatible : c'est notamment le cas sous Linux puisque généralement /bin/sh est un lien symbolique vers /bin/bash.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 32
    Points
    32
    Par défaut la reponse d'un copain

    je suis tombe sur le bon type a midi. Voila sa solution :
    find repertoire_source -name "nom_fichier" | xargs cp --parent --target-directory=repertoire_cible
    Si le cp ne marche pas, faut utiliser le script suivant en plus :
    #! /bin/sh

    dest=$1
    shift
    cp $* $1
    Le rendre executable et l'utiliser dans la commande a la place de cp.
    Dsle la biere ne sera pas pour vous. Merci quand meme.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 11h43
  2. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 11h32
  3. Réponses: 14
    Dernier message: 25/10/2004, 22h33
  4. batch de recherche de fichier ...
    Par Félia dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2004, 16h54
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo