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

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -
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
...


A voir également:

4 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 
Super sympa zipe31,

C'est ok.

Merci
0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention  
 
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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Oups ;-(
-maxdepth 0
est en trop du coup, de même que
! -empty
qui ne concerne que les répertoires.
0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   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
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23 > zipe31 Messages postés 36402 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