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 04/07/2007, à 17:32

pled

[Résolu] Recherche d'un type de fichier et copie dans un répertoire

Bonjour,

Je cherche à faire un script qui va me copier toutes les photos d'un disque externe (contenant des sous-répertoires) vers un répertoire donné, sans reproduire l'arborescence dans le répertoire de destination.
De plus le répertoire de destination contient des espaces.

J'ai lu l'article "recherche et copie de fichier" (http://forum.ubuntu-fr.org/viewtopic.php?id=128662) mais lui recrée l'arborescence de la source.

En le modifiant, je bute en fait sur les espaces que contient le répertoire de destination, et son utilisation comme variable dans le script ($reparrivee/$fic).

Mon dossier de départ est par exemple: /mnt/cf0024
Mon dossier de destination est: /data/Mes images/2007/Vacances Juin

Et je veux donc récupérer tous les fichiers .jpg du disque externe.

L'idéal (pour mes besoins) serait de passer en paramètre les 2 dossiers (source et destination) en lançant le script. Ou mieux encore que le script me le demande au lancement.

Si quelqu'un peut m'aider ?
Merci,

Dernière modification par pled (Le 09/07/2007, à 12:21)

Hors ligne

#2 Le 04/07/2007, à 20:25

Uther Pendragon

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

La solution est probablement dans les guillemets. Admettons que tu ais les deux variables suivantes: $src_path et $dest_path, il faut écrire quelque chose du style
cp "$src_path/$fic" "$dest_path/$fic"

Un autre soucis auquel il faux penser, c'est les fichiers en doubles. Si tu as une arborescence source, il se peut que tu ais plusieurs fois des fichiers différents portants le même nom. Il faut donc dans ce cas éviter qu'ils s'écrasent mutuellement lorsque tu copies tout dans le même répertoire.


Vous êtes un PRO ? Vous avez besoin de conseils pour votre informatique ? Visitez www.gerst.fr

Hors ligne

#3 Le 05/07/2007, à 13:54

yvon22

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

Bonjour,

tu peux utiliser la commande find pour trouver les fichiers et associer une commande de copie.

Pour afficher le nom de tous les fichiers ayant le type jpg à partir du répertoire courant :

find . -name "*.jpg" -ls

Pour copier tous les fichiers (testé rapidement sous AIX) :

find . -name "*.jpg" -exec cp {} /data/Mes_Images/. \;

Tu peux placer tout cela dans un script du type :

#!/bin/bash
# Format d'appel : nom-du-script repertoire-source repertoire-destination
#
cd $1
find . -name "*.jpg" -exec cp {} $2/. \;

#4 Le 06/07/2007, à 21:18

pled

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

Merci pour les réponses.

La solution d'yvon22 me plait bien, en une seule commande. Les paramètres ne passent pas quand j'essaie le script, mais en ligne de commande ça marche. Ce n'est pas plus mal finalement: c'est une opération qui peut servir dans d'autres cas. Et en plus on apprend à utiliser la commande find !

Le pb des espaces se régle en mettant des guillemets, ce qui donne par exemple:

find /mnt/cf0024 -name "*.jpg" -ls -exec cp {} "/data/Mes images/2007/Vacances Juin/." \;

Il reste un truc que j'aimerai faire, c'est chercher aussi bien "*.jpg" que "*.JPG". J'ai regardé le man de find, ça n'a pas l'air possible.

Mais bon, je peux déjà faire ce que je veux.

Merci encore.

Hors ligne

#5 Le 08/07/2007, à 04:18

syeric

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

Salut

As tu mis des guillemets pour les paramêtres d'exécution du script ?

En l'occurrence dans ton cas :

nom-du-script "/mnt/cf0024" "/data/Mes images/2007/Vacances Juin/"

Pour la commande il y a une deuxième variante possible :

cp `find /repertoire -name "*.jpg"` /repertoire2/

` c'est alt gr + 7 ;-)

Pour traiter les .jpg et .JPG en une fois, tu mets un && entre les deux commandes :

find blabla && find blabla

A+

Syeric

Dernière modification par syeric (Le 08/07/2007, à 04:45)

Hors ligne

#6 Le 08/07/2007, à 13:44

BlaireauOne

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

pled a écrit :

Il reste un truc que j'aimerai faire, c'est chercher aussi bien "*.jpg" que "*.JPG". J'ai regardé le man de find, ça n'a pas l'air possible.
Mais bon, je peux déjà faire ce que je veux.

Réponse smile

find /mnt/cf0024 \( -name "*.jpg" -or -name "*.JPG" \) -ls -exec cp {} "/data/Mes images/2007/Vacances Juin/." \;

Hors ligne

#7 Le 09/07/2007, à 12:20

pled

Re : [Résolu] Recherche d'un type de fichier et copie dans un répertoire

cool ! j'avais essayé "*.jpg" -or "*.JPG"...

je comprend mon erreur maintenant !

Et un petit [résolu] de plus.

Merci.

Hors ligne