Déplacer des dossiers présents dans une liste (fichier.txt)

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -
Bonjour,

J'ai un fichier qui contient des noms de dossier sous la forme :
1
2
6
256
3548
596
24

Je souhaiterais lister le contenu de ces répertoires présents dans ce fichier et si des fichiers ou sous dossiers sont trouvés pour chacun de ces répertoires, je voudrais déplacer ces répertoires et tout leurs contenus (fichiers et sous dossiers) dans un autre dossier.

Peut être avec les commande
ls, find,xarg
mais je ne vois pas la syntaxe a utiliser

Une idée?
Merci
...



--
L'accès au savoir est la première liberté que chaque homme devrait avoir.

4 réponses

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

    while read ligne;do find "${ligne}" -maxdepth 0 -type d ! -empty -exec echo "mv -v {} /rep/dest" \;;done < fichier.txt


    En supposant que les répertoires listés sont bien dans le même répertoire où se trouve le fichier (fichier.txt) et d'où est lancée la commande ;-\

    Si c'est concluant, enlève la commande
    echo
    et les quotes doubles qui l'entourent.
    0
  2. pcsystemd Messages postés 734 Statut Membre 23
     
    Super sympa zipe31,

    C'est ok.

    Merci
    0
    1. pcsystemd Messages postés 734 Statut Membre 23
       
      Salut zipe31,

      Juste un complément et si je veux faire la meme chose avec des fichiers qui sont dans ces repertoires.

      Je m'explique

      Mon fichier contient une partie du nom des fichiers donc :
      220_542_15698
      220_542_189
      220_542_2569
      220_28_3
      220_28_15
      220_54_653
      220_54_158977
      etc..


      Je veux déplacer tous les fichiers dont le nom contient chaque ligne de ce fichier et qui sont dans différents sous répertoires du répertoire principal d 'ou je lance ma commande vers les sous répertoires places sur un autre disque et si le sous répertoire n'existe pas le créait.


      Merci
      0
      1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502 > pcsystemd Messages postés 734 Statut Membre
         
        Ben faut juste préciser le répertoire (
        find /chemin
        ), remplacer le type de fichier (
        type -d
        par
        -type f
        ), rajouter une recherche sur le nom (
        -name "${ligne}*"
        et remplacer
        -exec …
        par
        -delete
        et ça devrait le faire ;-))
        0
  3. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci.

    J'ai fait ça mais apparemment ce la ne fonctionne pas :

    while read ligne;do find .  -maxdepth 0 -type f -name "*${ligne}*" ! -empty -exec echo "mv -v {} /rep/destiantion/" \;;done < file.txt 


    Pour info le nom des fichiers sont :

    t21_0_220_542_15698_2.jpg
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      Oups ;-(
      -maxdepth 0
      est en trop du coup, de même que
      ! -empty
      qui ne concerne que les répertoires.
      0
  4. pcsystemd Messages postés 734 Statut Membre 23
     
    Merci mais j'ai encore un petit souci.

    Je suis dans le dossier 230 et je veux déplacer tous les fichiers de la liste qui sont dans des sous repertoires du dossier 230 mais cela semble ne pas fonctionner avec la commande :

    while read ligne;do find .  -type f -name "*${ligne}*" -exec echo "mv -v {} /ref/destination/" \;;done < file.txt

    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 502
       
      Sans voir les messages d'erreurs ou du moins la sortie de la commande, difficile de se faire une idée ;-((

      En réduisant la liste des fichiers et en ne ciblant qu'un répertoire, que renvoie :

      while read ligne;do find REP_UNIQUE  -type f -name "*${ligne}*" -exec echo "mv -v {} /ref/destination/" \;;done < file.txt
      0
      1. pcsystemd Messages postés 734 Statut Membre 23 > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui c'est Ok.

        Oups j'ai besoin de congés! C'est moi qui lançait la commande du mauvais repertoire

        Merci encore.
        0