Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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