Pages : 1
#1 Le 31/03/2008, à 11:04
- Alzeubig
Résolu - Automatisation
Bonjour à tous,
Je viens de récupérer sur mon DD 765 dossiers de 500 fichiers chacun d'un autre DD sur lequel une défragmentation malheureuse avait été effectuée.
Je voudrais écrire une procédure automatique pour
1°/ ouvrir chacun de ces dossiers
2°/prendre, dans chacun de ces dossiers uniquement les fichiers BMP et JPG
3°/copier ces données dans un dossier spécifique.
Si je fais cela à la main j'en ai pour 15 jours.
Je pensais écrire la programmation suivante, pouvez vous m'aider dans la syntaxe:
sudo open/home/thibault/recup_dir1 to recup_dir765
sudo get *.jpg and *.bmp
sudo copy to données/jocelyne
Qu'en pensez-vous?
Je vous remercie de m'aider.
Dernière modification par Alzeubig (Le 17/05/2008, à 19:05)
Hors ligne
#2 Le 31/03/2008, à 11:44
- R@ND@LL
Re : Résolu - Automatisation
Pourquoi sudo?
Si la partition de copie est accessible à ton utilisateur, il n'est pas nécessaire, et va mettre le bordel dans tes permissions.
Après pour la syntaxe, faut voir avec un spécialiste du script bash...
Si l'amour est aveugle, il faut palper.
Pourquoi remettre à deux mains ce qu'on peut faire à une seule?
(J'en ai plein des comme ça, si vous voulez passer pour un abruti en société...)
Hors ligne
#3 Le 31/03/2008, à 12:14
- philou8237
Re : Résolu - Automatisation
place toi ds le dossier parent de tes dossiers récupérés, et là exécute ce script :
for i in `find . -type d`; do
cp "$i/*.jpg" dest_dir
cp "$i/*.bmp" dest_dir
done
find . -type d te sors tous les dossiers du répertoire courant (quand je dis tous, c'est tous : dossiers, sous-dossiers, etc....)
pour chaque sous dossier sorti, la boucle copie les fichiers jpg et bmp qu'il trouve dedans dans le dossier dest_dir.
Pour info : ce script ne se déplace pas au fur et à mesure du traitement, donc dest_dir est un sous dossier du répertoire courant, qui doit etre créé avant d'éxecuter le script.
Hors ligne
#4 Le 31/03/2008, à 13:30
- Alzeubig
Re : Résolu - Automatisation
Je te remercie, je vais essayer tes lignes de commande.
Hors ligne
#5 Le 31/03/2008, à 14:00
- Alzeubig
Re : Résolu - Automatisation
J'ai un petit problème; après l'exécution des commandes indiquées j 'ai une multitutes de messages de ce genre:
cp: ne peut évaluer `./recup_dir.625/*.jpg': Aucun fichier ou répertoire de ce type
et pourtant il y a bien des fichiers jpg dans le dossier;
En outre, il n'y a rien dans le dossier dest_dir
Aurai-je fait une fausse manoeuvre?
Hors ligne
#6 Le 31/03/2008, à 14:05
- Alzeubig
Re : Résolu - Automatisation
Il faut bien inscrire le script dans un terminal?
Hors ligne
#7 Le 31/03/2008, à 14:09
- Alzeubig
Re : Résolu - Automatisation
et j'ai crée dest_dir dans le répertoire parent qui est bien le repertoire courant?
Hors ligne
#8 Le 31/03/2008, à 14:14
- philou8237
Re : Résolu - Automatisation
je suis sous Windows donc je ne peux pas trop tester. Cependant essaies tjrs ça :
for i in `find . -type d`; do
for j in `find $i -type f -iname "*.jpg"`; do
cp "$j" dest_dir
done
for j in `find $i -type f -iname "*.bmp"`; do
cp "$j" dest_dir
done
done
je ne sais plus si c'est "cp $j" ou "cp $i/$j"
Hors ligne
#9 Le 31/03/2008, à 14:44
- Alzeubig
Re : Résolu - Automatisation
Merci, je vais essayer avec les 2 versions
Hors ligne
#10 Le 31/03/2008, à 16:00
- Alain.g
Re : Résolu - Automatisation
Concernant la première erreur, le joker étant entre guillemets, il n'est plus interprété comme un métacaractère.
Sur le deuxième script : "find" cherchera de manière récursive, lister d'abord les dossiers est donc inutile. Il n'est pas non plus besoin de faire deux boucles, on peut très bien demander à find de trouver les jpg et les bmp en une seule fois (soit en utilisant plusieurs fois -(i)name, soit en utilisant -(i)regex)
find /home/thibault/recup_dir* -type f -iregex '.*\.\(jpe?g\|bmp\)' -exec cp '{}' "/home/thibault/données/jocelyne" \;
Dans cet exemple, find cherchera tous les .jpg et .bmp (insensible à la case, jpeg compris) dans les dossiers commençant par "/home/thibault/recup_dir" et les copieras dans "/home/thibault/données/jocelyne" (qui doit être créé avant).
Si plusieurs fichiers portent le même nom, un seul sera copié bien sûr...
Dernière modification par Alain.g (Le 31/03/2008, à 16:13)
Xubuntu Karmic !
Hors ligne
#11 Le 31/03/2008, à 18:49
- Alzeubig
Re : Résolu - Automatisation
Je te remercie ça a marché impeccable, mais très long, car ça m'a pris tout le repertoire et tous les sous dossiers de mon DD. Le PC a tourné pendant 3 heures.
nfin, je suis arrivé au bout , c'est la principal.
Encore une fois merci.
Hors ligne
#12 Le 31/03/2008, à 18:51
- Alzeubig
Re : Résolu - Automatisation
Merci AlainG pour ta réponse de programmation que je vais conserver précieusement, car j'en aurai certainement besoin dans l'avenir.
Hors ligne
Pages : 1