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

Shell et commandes GNU Discussion :

Recherche de fichiers dans des répertoires et sous-répertoires à partir d'une liste


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut Recherche de fichiers dans des répertoires et sous-répertoires à partir d'une liste
    Bonjour la communauté,

    je suis debutant en programmation shell et j'ai un petit soucis. j'ai un liste qui contient près de 10 000 fichiers que je dois rechercher dans des repertoires et sous repertoires et ensuite les copier dans un autre repertoire.

    j'ai un repertoire comme ceci rep1
    / rep11 /rep12
    /rep111 /rep121

    et tous ces repertoires contiennent des fichiers.

    j'ai besoin d'un coup de main pour demarrer.

    merci

  2. #2
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    Bonjour,

    voici une base pour commencer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    liste_fichiers='chemin de ton fichier'
     
    for fichier in $liste_fichiers
    do
            find / -iname $fichier -exec mv {} /Nouveau_DOSSIER \;
    done

  3. #3
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    Merci pour le script.

    mais quand je l'execute j'ai un message d'erreur du genre chemin du fichier/ line N° : command not found.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Un petit correctif à la comande de Diablo_22
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/bin/bash
    while read fichier; do
         find / -iname "$fichier" -exec ln {} /Nouveau_DOSSIER \;
    done < fichier_contenant_la_liste

    Les différences
    • liste_fichiers='chemin de ton fichier' ne peut pas fonctionner du moins pas dans le sens tel que j'imagine le voudrait Diable_22. En effet, je présume qu'il voudrait que "liste_fichiers" contienne la liste située dans le fichier. Or, tel que c'est écrit, la variable "liste_fichiers" contient juste la chaine "chemin du_fichier". Pour avoir le contenu, il aurait fallu écrire liste_fichiers=$(cat chemin_du_fichier) mais on peut swapper cette étape si on utilise directement le fichier tel que je l'ai fait.
    • utiliser des guillemets pour protéger le nom du fichier si celui-ci contient des caractères exotiques
    • ln au lieu de mv (en supposant que le nouveau dossier soit placé dans le même FS). Ca crée un lien au lieu de le déplacer. Si ça foire, les fichiers n'auront pas été déplacés on peut alors tout annuler et recommencer. Faut aussi faire gaffe qu'un nom de fichier est unique dans un dossier; Si on a par exemple rep11/toto et rep111/toto, on ne pourra pas avoir les deux "toto" dans le nouveau dossier. Et si tout réussi, on peut alors recommencer en remplaçant "ln" par "mv".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    Merci Sve@r! ça fonctionne.

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

Discussions similaires

  1. VBA Recherche de Fichier dans des sous répertoires
    Par GuiJenn34 dans le forum Général VBA
    Réponses: 12
    Dernier message: 09/06/2015, 14h14
  2. Récupérer des fichiers dans des repertoires et sous répertoires
    Par philcphilc dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 05/09/2013, 19h37
  3. [XL-2003] recherche un fichier dans des sous répertoire et recopier son contenu
    Par hallscar dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/12/2011, 20h30
  4. Recherche de fichiers dans des sous répertoires
    Par Mimi Bulles dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2006, 16h41

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