Menu

Déplacer des dossiers présents dans une liste (fichier.txt) [Résolu/Fermé]

Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
- - Dernière réponse : pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
- 28 juil. 2016 à 11:17
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
...


Afficher la suite 

4 réponses

Messages postés
36628
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 juillet 2019
3710
0
Merci
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.
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
Super sympa zipe31,

C'est ok.

Merci
pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16 -
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
zipe31
Messages postés
36628
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 juillet 2019
3710 > pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
-
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 ;-))
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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
zipe31
Messages postés
36628
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 juillet 2019
3710 -
Oups ;-(
-maxdepth 0
est en trop du coup, de même que
! -empty
qui ne concerne que les répertoires.
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16
0
Merci
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

zipe31
Messages postés
36628
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 juillet 2019
3710 -
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
pcsystemd
Messages postés
558
Date d'inscription
dimanche 27 novembre 2005
Statut
Membre
Dernière intervention
19 juin 2019
16 > zipe31
Messages postés
36628
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
20 juillet 2019
-
Oui c'est Ok.

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

Merci encore.