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 29/04/2006, à 21:40

luron

[Résolu] Recherche et copie de fichiers selon l'extension

Bonjour!

J'aimerais savoir comment faire une recherche en précisant l'extension des fichiers et copier tous les fichiers trouvés vers un dossier en particulier. Par exemple, rechercher tous les fichiers *.odt présents sur mon ordinateur et les copier sur ma clé usb.

Je peux facilement trouver tous les fichiers *.odt sur mon ordinateur à l'aide du logiciel gnome-search-tool, mais le problème est que les actions possibles après la recherche sont très restreintes (après un clic droit, on ne peut qu'ouvrir le fichier ou le dossier ou déplacer à la corbeille). Je n'ai pas trouvé non plus de façon de le faire à l'aide de cp dans une console.

Quelqu'un a une idée? Merci beaucoup!

Dernière modification par luron (Le 01/05/2006, à 14:49)

Hors ligne

#2 Le 29/04/2006, à 21:44

etoquio

Re : [Résolu] Recherche et copie de fichiers selon l'extension

avec gnome search tool, tu fait ta recherche, "ctrl a" et tu fait un drag and drop sur ta cle usb et c fini

bonne soiree

Dernière modification par etoquio (Le 29/04/2006, à 21:47)


France Telecom dit ADIEU à  ses abonnés(10000 lignes / jour) !!!,
Un jour Bilou perdra aussi beaucoup de clients !!!!
"A vendre, grosse PME, 1 $ symbolique (0.10 €)" ~ THE FUTUR ???????"

Hors ligne

#3 Le 29/04/2006, à 21:48

etoquio

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Tu peut essayé un logiciel que je trouve sympa pour la gestion de fichier c'est GNOME COMMANDER, il est complet !!!


France Telecom dit ADIEU à  ses abonnés(10000 lignes / jour) !!!,
Un jour Bilou perdra aussi beaucoup de clients !!!!
"A vendre, grosse PME, 1 $ symbolique (0.10 €)" ~ THE FUTUR ???????"

Hors ligne

#4 Le 29/04/2006, à 22:15

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Merci beaucoup etoquio pour ta réponse plus que rapide! C'était tout simple...

Je vais installer le logiciel que tu me suggères et le tester.

Bonne soirée à toi aussi!

Hors ligne

#5 Le 29/04/2006, à 22:23

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Ou très simplement :

#! /bin/bash
#script  findcp.sh

TYPE=odt  #type de fichier à copier
ORIGINE=~/origine #répertoire à copier
DEST=~/destination # cible où coller les copies

for file in $ORIGINE/*.$TYPE
    do
    cp -a $file $DEST
done

#6 Le 29/04/2006, à 23:05

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Finalement, mon problème n'est pas résolu. J'avais fait une recherche à l'aide de gnome-search-tool et j'avais sélectionné et glissé deux ou trois fichiers. Ça copiait bien mes deux ou trois fichiers dans le dossier voulu. Cependant, si je veux copier tous mes fichiers, ça ne marche plus. Par exemple, j'ai environ 100 fichiers au format .odt et si je les sélectionne tous dans gnome-search-tool et que je les glisse dans un dossier, il n'y en a que la moitié (environ une cinquantaine) qui est copiée. Même chose pour mes *.rtf. Je les sélectionne tous (environ 175) et seulement cinq sont copiés. Je ne comprends pas pourquoi. Je précise que je suis sous Ubuntu 5.10.

À cep_: J'ai copié ton script dans un éditeur de texte, je lui ai donné des permissions 777, je l'ai rendu exécutable grâce à chmod a+x. Ensuite. je dois faire quoi, car si je clique sur le fichier, il s'ouvre avec l'éditeur de texte?

Aussi, peut-on avec ce script faire une recherche de plusieurs types de documents (disons TYPE=odt, sxw)?

Dernière modification par luron (Le 29/04/2006, à 23:06)

Hors ligne

#7 Le 30/04/2006, à 06:35

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

J'ai mis les points que tu peux modifier ici :
TYPE=odt  #type de fichier à copier
ORIGINE=~/origine #répertoire à copier
DEST=~/destination # cible où coller les copies

Il suffit donc de modifier :
odt
~/origine
~/destination
et les adapter à tes besoins, les modifiers et les multiplier. Par exemple DEST=/media/usbdisk

Inutle de mettre à 777.

Pour le lancer, si tu nommes le script findcp.sh et le ranges dans le répertoire scripts de ton /home :
bash scripts/findcp.sh

#8 Le 30/04/2006, à 11:32

kaworu

Re : [Résolu] Recherche et copie de fichiers selon l'extension

+1 pour le script de cep_ , simple et efficace.
(ne pas oublier de le rendre executable)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#9 Le 30/04/2006, à 12:25

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

(ne pas oublier de le rendre executable)

Pas nécessaire s'il est lancé avec la commande : bash le_script

#10 Le 30/04/2006, à 14:06

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

J'ai réussi à faire fonctionner le script, mais j'ai deux petits problèmes.

1) Le script ne parcoure que le dossier de destination. Est-il possible (ce serait presque nécessaire) de lui faire lire récursivement les dossiers (c'est-à-dire dossier d'origine et sous-dossiers)?

2) S'il y a des espaces dans le nom de mes fichiers, le script affiche un message d'erreur. Par exemple, pour un fichier nommé Test 1, le script affiche

/home/utilisateur/Test: Aucun fichier ou répertoire de ce type
/home/utilisateur/1: Aucun fichier ou répertoire de ce type

Merci de votre aide!

Hors ligne

#11 Le 30/04/2006, à 14:34

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Soit tu refais un passage en modifiant la source (le plus simple), soit tu ajoutes un récursif, soit tu modifies sur ces bases par exemple en adaptant encore :
find "$source" -depth | cpio -admvp "$destination"  etc. etc.

Pour les noms avec espace il faudrait adapter...

Bonne continuation.
cep

#12 Le 30/04/2006, à 15:02

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

cep_ a écrit :

Soit tu refais un passage en modifiant la source (le plus simple)

C'est presque impensable avec plus d'une centaine de dossiers à analyser.

cep_ a écrit :

soit tu ajoutes un récursif

J'ai essayé

cp -ar $file $DEST

mais ça ne fonctionne pas. Mon test est peut-être niaiseux, mais je dois avouer que je n'y connais pas grand chose en script.

cep_ a écrit :

soit tu modifies sur ces bases par exemple en adaptant encore :
find "$source" -depth | cpio -admvp "$destination"  etc. etc.

Là je dois avouer que je suis complètement perdu.

cep_ a écrit :

Pour les noms avec espace il faudrait adapter...

Je ne sais pas du tout comment faire.

cep_ a écrit :

Bonne continuation.

Merci!

Je suis désolé. Je ne veux pas faire faire mon script par les autres, je suis motivé à apprendre même si je n'y connais rien en script. Je n'ai pas peur non plus de la ligne de commande, j'ai appris beaucoup depuis le jour où j'ai balancé vous savez quoi (précisément le jour où j'ai eu accès à un disque de Linux!) pour n'être que sous Linux. Par exemple, j'utilise storeBackup en ligne de commande pour des sauvegardes. Je n'ai pas trouvé d'options malheureusement pour ne sauvegarder que telles ou telles extensions (seulement les *.odt, *.sxw, *.txt et *.ogg par exemple). J'aimerais donc pouvoir chercher sur mon ordinateur tous les types de fichiers que je désire sauvegarder et les copier dans un dossier, et ce indépendamment des noms de mes fichiers (avec ou sans espace, avec ou sans accent, etc.).

Je vous remercie beaucoup.

Hors ligne

#13 Le 30/04/2006, à 15:26

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

smile
Alors, très rapidement :

#! /bin/bash
# findcp2.sh
TYPE=odt #type de fichier à copier
ORIGINE=~/origine #répertoire à copier
DEST=~/destination # cible où coller les copies

find "$ORIGINE" -depth -regex .*$TYPE | cpio -admvp "$DEST"

#14 Le 30/04/2006, à 15:52

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Merci beaucoup cep_! Ça fonctionne très bien! Je suis bien heureux! Cependant, il ne me reste qu'un petit problème. Si je veux faire une recherche de plusieurs types de documents en même temps (je crois que c'est possible, sinon ce doit être ça le problème), comme

TYPE=odt #type de fichier à copier
TYPE=jpg #type de fichier à copier

le script ne copie que le type de document se trouvant en deuxième (dans mon exemple, que les *.jpg). Est-ce normal? Y a-t-il un moyen de faire la recherche pour *.odt et *.jpg en même temps, par exemple?

Encore un gros merci!

Hors ligne

#15 Le 30/04/2006, à 16:05

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

De rien.   wink

Le plus simple, tu doubles la ligne entière en créant $TYPE2 et son entrée dans la case de configuration.

En ligne de commande ce serait :

find /home/user/repertoire -regex .*odt &&  find /home/user/repertoire -regex .*jpg

On peut aussi améliorer bien sûr.

#16 Le 30/04/2006, à 16:22

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

cep_ a écrit :

Le plus simple, tu doubles la ligne entière en créant $TYPE2 et son entrée dans la case de configuration.

Ça fonctionne impeccablement!!! Merci beaucoup cep_, ce script est trop génial!!! Et merci de ton aide et de ta patience!!! J'apprécie beaucoup!

Hors ligne

#17 Le 30/04/2006, à 16:55

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Content de savoir que tu as pu régler ton problème.

Comme quoi les solutions les plus simples sont parfois les meilleures et, avec les outils déjà disponibles dans le système, il n'est pas toujours nécessaire d'ajouter des logiciels. smile

Cordialement.
cep

#18 Le 30/04/2006, à 18:09

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Merci encore cep_! Je ne veux pas abuser, mais j'ai encore une petite question. Est-il possible d'exclure de la recherche certains sous-dossiers présents dans le dossier d'origine, c'est-à-dire le dossier identifié dans

ORIGINE=~/origine #répertoire à copier

Je te remercie encore.

Hors ligne

#19 Le 30/04/2006, à 18:22

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

C'est un feuilleton lol

Ça dépent des caractéristiques de fichiers à exclure.

Mais alors tu pourrais envisager dans un premier temps une commande qui établit une liste de fichiers présent, ensuite une autre commande avec un awk ou sed ou autre procédé pour traîter cette liste et enfin une dernière commande qui ferait la copie.

Tout dépend de la base sur laquelle les fichiers doivent être exclus, mais si la liste est complexe il sera plus simple d'intervenir ensuite sur le résultat, c'est à dire sur les fichiers copiés pour faire un rm, ou alors tu fais au départ un mv des fichiers que tu ne veux pas, vers un autre répertoire, hors du répertorie principal, quitte à faire des liens ensuite.

#20 Le 30/04/2006, à 18:49

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

On va y arriver cep_! La première partie de ta réponse est un peu compliquée pour moi.

cep_ a écrit :

mais si la liste est complexe il sera plus simple d'intervenir ensuite sur le résultat

Ça me semble plus simple effectivement. Le problème, c'est que je veux faire une sauvegarde de tous mes fichiers comportant du texte (*.odt, *.rtf, *.sxw, *.txt). Le script fonctionne à merveille. Cependant, en l'exécutant et en copiant le résultat sur mon ordinateur, je me retrouve avec environ 8000 fichiers *.txt à cause de mon dossier openclipart-0.18-full qui contient près de 8000 oeuvres, chacune accompagnée d'une licence au format *.txt. Je veux faire une copie de sauvegarde sur ma clé usb, mais en usb 1.0 ça va prendre un temps fou à copier 8000 fichiers (je l'ai déjà fait et j'aimerais mieux ne pas le refaire trop souvent).

Je me dis donc qu'une solution simple (outre déménager mon dossier) serait de renommer tous mes fichiers *.txt de mon dossier openclipart-0.18-full pour enlever l'extension. Ainsi, je pourrais utiliser facilement le superbe script sans qu'il ne copie ces 8000 fichiers *.txt. Je me demande donc s'il y a une commande qui permet de renommer tous les fichiers d'un dossier et de ses sous-dossiers? J'utilise déjà le logiciel KRename, mais on ne peut sélectionner avec ce dernier qu'un dossier à la fois (sans ses sous-dossiers).

Merci beaucoup pour ta patience!

Hors ligne

#21 Le 30/04/2006, à 19:14

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Et dans open... il y a d'autres fichiers .txt que ceux à supprimer  et pas de sous répertoires ?
DAns ce cas tu peux faire un :

#! /bin/bash
#script  findcp3.sh

TYPE=txt  #type de fichier à copier
ORIGINE=~/origine #répertoire à copier
DEST=~/destination # cible où coller les copies

for file in $ORIGINE/*.$TYPE
    do
    mv  $file $file_bak
done

le mv va renommer les fichiers .txt en .txt_bak
Sinon je regarderai un peu plus en détail plus tard.

#22 Le 30/04/2006, à 19:49

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Il y a justement un paquet de sous-dossiers dans mon dossier openclipart-0.18-full. Je fais des tests avec mon logiciel KRename. J'ai réussi à lui faire voir les sous-dossiers, mais je n'ai pas trouvé encore d'option pour filtrer ma recherche (enlever l'extension seulement pour les *.txt et non pour tous les fichiers).

Hors ligne

#23 Le 30/04/2006, à 20:34

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Ça y est! J'ai réussi! J'ai pu enlever l'extension de tous mes fichiers *.txt dans mon dossier openclipart-0.18-full. Le logiciel KRename offre bien les options sous-dossiers et filtre des fichiers à ouvrir. Elles sont à l'ouverture et je ne les avais jamais vues. Je peux donc désormais utiliser le script en toute quiétude... Merci beaucoup cep_ pour ton aide!

Juste pour savoir et pour voir si je comprends bien, il n'est pas possible avec ton script d'exclure un sous-dossier (recherche dans /home/utilisateur sauf /home/utilisateur/dossier). Il faut nécessairement passer par un renommage ou un déplacement des fichiers non voulus. Me trompé-je?

Dernière modification par luron (Le 30/04/2006, à 20:39)

Hors ligne

#24 Le 30/04/2006, à 21:54

cep_

Re : [Résolu] Recherche et copie de fichiers selon l'extension

Ok pour  kRename.
Tu aurais aussi pu faire un genre de :

find ~/origine -name "*.txt" -exec mv {} {}.bak \;

qui aurait modifié dans le répertoire ~/origine et ses sous répertoires tous les fichiers avec extention .txt en mettant à la place l'extension .bak

Si tu veux l'utiliser en script pour le réutiliser, afin de simplifier modifier utilise les "$TYPE" pour simplifier et adapter facilement.

Donc pour résumer, d'abord la ligne du dessus puis :

#! /bin/bash
# findcp2.sh
TYPE=odt #type de fichier à copier
ORIGINE=~/origine #répertoire à copier
DEST=~/destination # cible où coller les copies

find "$ORIGINE" -depth -regex .*$TYPE | cpio -admvp "$DEST"

Bonne soirée.
cep

#25 Le 01/05/2006, à 00:51

luron

Re : [Résolu] Recherche et copie de fichiers selon l'extension

cep_ a écrit :

find ~/origine -name "*.txt" -exec mv {} {}.bak \;

qui aurait modifié dans le répertoire ~/origine et ses sous répertoires tous les fichiers avec extention .txt en mettant à la place l'extension .bak

Merci beaucoup cep_. J'ai essayé, sauf que ça ne met pas .bak à la place de .txt, mais ça l'ajoute pour donner .txt.bak. Le résultat est sensiblement le même en ce sens que ton script ne reconnaîtra pas les .txt.bak, mais si cette petite commande pouvait vraiment enlever des extensions ou les modifier (document.txt changé en document ou en document.quelque_chose), ça serait génial et beaucoup plus léger qu'ouvrir un logiciel pour faire la même chose.

J'espère que je n'abuse pas... Tu m'as déjà amplement aidé!!!

Hors ligne