<![CDATA[Forum Ubuntu-fr.org / cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?id=335530 Mon, 07 Sep 2009 13:57:25 +0000 FluxBB <![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2914522#p2914522 AnsuzPeorth, merci beaucoup j'avais juste différer l'étude de se script j'avais quelques petits empêchement, j'essaierais de le revoir se soir.

]]>
Mon, 07 Sep 2009 13:57:25 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2914522#p2914522
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2913530#p2913530 Les explications de nesthib sont claires pourtant smile

Ici, le dossier source est le dossier avec tes icones, le dossier destination est là ou tes icones seront copiés et fichiers meta modifier.

J'en profite pour dire qu'il risque d'avoir qqles soucis de referencement dans le fichier meta avec ce script, c'est pas trés grave, mais bon...... !
Sinon, je viens de poster un script dont l'origine est ce sujet, j'ajouterais, si du monde derriere, un traitement automatique, ce qui te permettra, avec qqles modifs, de faire le travail que tu souhaite. ! (etudie le script que j'ai fais, il est commenté et si tu le lance en console, j'ai laissé le debuggage, et très claire pour une fois, bien obligé vu le bordel causé par le glisser déposer de gtkdialog.....)

]]>
Sun, 06 Sep 2009 17:57:38 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2913530#p2913530
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2895163#p2895163 nesthib a écrit :
fove a écrit :

AnsuzPeorth, merci encore, pour l'instant j'ai désactivé l'instruction qui converti les ico en png. Au fait, entre temps... je me suis mis à la programmation en bash et... c'est très simple, je pense que sa fais longtemps que je ne suis plus un débutant et que je vais devoir ne plus trop demandé, enfin, juste une chose cependant ^^, je ne comprends pas bien ces deux lignes :

#remplace nom du path "source" par "destination", MODIFIER SELON DOSSIERS A TRAITER
NEW_PATH=$(sed 's@source@destination@' <<< "${ligne}")

(J'en fini avec un autre script et j'ai des idées d'amélioration pour celui-ci (a savoir qu'il va demander le répertoire source et le répertoire cible)

Bon pour faire bref sed c'est un éditeur de texte, la commande la plus courante de sed est la substitution. ainsi :

s = substituer , @ = séparateur (on pourrait prendre d'autres caractères, souvent tu verra /), source = ce qu'on cherche à substituer , destination = par quoi on substitue

En l'occurrence source se sera mon dossier... source et destination... le dossier qui subira les modification ?

Désolé si je fais trainé cette affaire, sa peut vous paraitre simple mais j'ai beaucoup de mal avec.

]]>
Thu, 27 Aug 2009 19:48:37 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2895163#p2895163
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2889325#p2889325 fove a écrit :

AnsuzPeorth, merci encore, pour l'instant j'ai désactivé l'instruction qui converti les ico en png. Au fait, entre temps... je me suis mis à la programmation en bash et... c'est très simple, je pense que sa fais longtemps que je ne suis plus un débutant et que je vais devoir ne plus trop demandé, enfin, juste une chose cependant ^^, je ne comprends pas bien ces deux lignes :

#remplace nom du path "source" par "destination", MODIFIER SELON DOSSIERS A TRAITER
NEW_PATH=$(sed 's@source@destination@' <<< "${ligne}")

(J'en fini avec un autre script et j'ai des idées d'amélioration pour celui-ci (a savoir qu'il va demander le répertoire source et le répertoire cible)

Bon pour faire bref sed c'est un éditeur de texte, la commande la plus courante de sed est la substitution. ainsi :

s = substituer , @ = séparateur (on pourrait prendre d'autres caractères, souvent tu verra /), source = ce qu'on cherche à substituer , destination = par quoi on substitue

ex

echo 'foo foobar barfoo bar' | sed 's/foo/FOO/'
echo 'foo foobar barfoo bar' | sed 's/foo/FOO/g'

je te laisse découvrir le résultats de ces 2 commandes (plus d'info en tapant dans le terminal : man sed)

le $( commande <<< ${variable}) c'est un moyen de faire passer le contenu de la variable en entrée de la commande de la même manière qu'avec un fichier tu peux faire

cat fichier | commande
commande <fichier

si tu es perdu je t'encourage à lire de la doc à bash tu en trouvera pas mal sur le net et tu pourra vite t'éclater à faire tout plein de scripts

(pour résumer tu passes le contenu de la variable ligne dans sed qui remplace 'source' par 'destination', le tout étant enregistré dans la variable NEW_PATH dont tu pourra récupérer le contenu avec la commande ${NEW_PATH} )

bon courage et pour la route

echo 'vbg prin gvbf rpebS ny rhD' | tr '[A-Za-z]' '[N-ZA-Mn-za-m]' | rev
]]>
Tue, 25 Aug 2009 00:40:53 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2889325#p2889325
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2888387#p2888387 juste un reup pour se détail que j'ai toujours pas su comprendre...

]]>
Mon, 24 Aug 2009 16:09:54 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2888387#p2888387
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2875801#p2875801 un ti up

]]>
Tue, 18 Aug 2009 01:23:53 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2875801#p2875801
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2862262#p2862262 AnsuzPeorth, merci encore, pour l'instant j'ai désactivé l'instruction qui converti les ico en png. Au fait, entre temps... je me suis mis à la programmation en bash et... c'est très simple, je pense que sa fais longtemps que je ne suis plus un débutant et que je vais devoir ne plus trop demandé, enfin, juste une chose cependant ^^, je ne comprends pas bien ces deux lignes :

#remplace nom du path "source" par "destination", MODIFIER SELON DOSSIERS A TRAITER
NEW_PATH=$(sed 's@source@destination@' <<< "${ligne}")

(J'en fini avec un autre script et j'ai des idées d'amélioration pour celui-ci (a savoir qu'il va demander le répertoire source et le répertoire cible)

]]>
Mon, 10 Aug 2009 22:21:20 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2862262#p2862262
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2856623#p2856623 Si tu essais de copier le script dans la console, ca risque pas de marcher, c'est sur smile
Pourtant je l'ai preciser dans un precedant message:

AnsuzPeorth-out a écrit :

Donc, il faut copier le script dans un fichier et le rendre executable. le lancer en console pour avoir les retour d'informations (pour verif)

Sinon, comme tu as l'air d'avoir des noms de fichiers/dossiers avec espaces, j'ai tout protegé, donc ....

le script qui suit est à copier dans un fichier, le rendre executable, ensuite tu le colle dans la console (coller le fichier ou glisser/deposer, cela evite de taper le path)  et appuyer sur entree, le script se lancera et tu auras le retour des commandes du script.

Il y a deux choses à modifier, le path du dossier source et les noms des dossiers source/destination par les dossier chez toi (variable NEW_PATH, commande sed).


#! /bin/bash

#emplacement "$HOME/job/source" "$HOME/job/destination" ($HOME = /home/user)
#REMPLACER CHEMIN DOSSIER SOURCE
find $HOME/job/source -type f -name "*\.ico" | while read ligne
do
#remplace nom du path "source" par "destination", MODIFIER SELON DOSSIERS A TRAITER
NEW_PATH=$(sed 's@source@destination@' <<< "${ligne}")





#recuperer nom du dossier a traiter
NOM_DOSSIER=$(basename "$(dirname "${NEW_PATH}")")

#path de l'icone destination
PATH_NOM_ICON="$(dirname "${NEW_PATH}")/."${NOM_DOSSIER}".png"


icotool -x "${ligne}" -o "${PATH_NOM_ICON}"
#pour copier simplement l'ico (decommenter le commande suivante et commenter la ligne precedente, changer l'extension png par ico dans la variable PATH_NOM_ICON, au dessus, et toutes les suivantes)
#cp "${ligne}" "${PATH_NOM_ICON}"

#nom du fichier dans dossier metafiles
PATH_FICHIER_NAUTILUS="$HOME/.nautilus/metafiles/"$(sed 's@^/@file:%2F%2F%2F@;s@/@%2F@g' <<< "$(dirname "$(dirname "${PATH_NOM_ICON}")")")".xml"

#le echo qui suit, sert juste de controle pour la console, peut donc etre supprimé
echo "${PATH_NOM_ICON}
${PATH_FICHIER_NAUTILUS}"

if [ -e "${PATH_FICHIER_NAUTILUS}" ]; then
echo "fichier metafile existe"
    if grep -q "${NOM_DOSSIER}" "${PATH_FICHIER_NAUTILUS}"; then
         echo "dossier referencé"
        sed -i 's@\(name="'"${NOM_DOSSIER}"'" timestamp="[0-9]*"\)@\1 custom_icon=".'"${NOM_DOSSIER}"'.png"@g' "${PATH_FICHIER_NAUTILUS}"
    else
        echo "dossier non referencé"
        if grep -q "<directory/>" "${PATH_FICHIER_NAUTILUS}"; then
            echo fichier vierge
            echo '<?xml version="1.0"?>
<directory><file name="'"${NOM_DOSSIER}"'" timestamp="'$(date "+%s")'" custom_icon=".'"${NOM_DOSSIER}"'.png"/></directory>
' > "${PATH_FICHIER_NAUTILUS}"
        else
            echo fichier non-vierge
            sed -i 's@</directory>@<file name="'"${NOM_DOSSIER}"'" timestamp="'$(date "+%s")'" custom_icon=".'"${NOM_DOSSIER}"'.png"/></directory>@g' "${PATH_FICHIER_NAUTILUS}"
        fi
    fi
else
echo "fichier metafile existe po"
echo '<?xml version="1.0"?>
<directory><file name="'"${NOM_DOSSIER}"'" timestamp="'$(date "+%s")'" custom_icon=".'"${NOM_DOSSIER}"'.png"/></directory>
' > "${PATH_FICHIER_NAUTILUS}"
fi

echo

done
nautilus -q && sleep 1 && nautilus&

exit

PAR CONTRE !!!! Je suis revenu chez moi (juste pour ce soir), j'ai donc pu tester avec des icones windows.....icotool ne fonctionne pas pour toutes, le rendu est degueulasse, il faudra trouver un autre utilitaire pour convertir les icones. Mais avant , test qqles une de tes icones windows.

Sinon, il y a tjrs la solution de copier simplement les ico, sans les convertir si tu ne trouve pas la commande magique pour la convertion (si les ico sont ok sous linux, il faudra modifier un peu le script, mais pas grand chose, voir commentaires)

message d'erreur icotool

compressed image data not supported

Commande pour tester resultat ico

icotool -x Fichier.ico -o fichier.png

Je pense que je pourrais difficilement etre plus clair smile
Voila, je reste encore un moment connecté aujourd'hui, ensuite....je sais pas qd je serais de retour disponible

ps:lis le code et les commentaires ....

]]>
Fri, 07 Aug 2009 22:21:41 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2856623#p2856623
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2856114#p2856114 voila précisément se que j'ai :

fove48@fove48-Toure:~$ #!/bin/bash
fove48@fove48-Toure:~$ #emlacement du dossier source dans find
fove48@fove48-Toure:~$ find /home/fove48/Bordel/icones -type f -name *ico | while read ligne
> do
> #c'est ici qu'on remplace le nom du dossier du path
> NEW_PATH=$(sed 's@icones@Test@' <<< "$ligne")
> 
> #recuperer nom du dossier a traiter
> NOM_DOSSIER=$(basename $(dirname $NEW_PATH))
> 
> #path de l'icone
> PATH_NOM_ICON="$(dirname $NEW_PATH)/.$NOM_DOSSIER.png"
> #icotool à installer !!!!
> icotool -x $ligne -o $PATH_NOM_ICON
> 
> #nom du fichier dans dossier metafiles
> PATH_FICHIER_NAUTILUS=$(sed 's@^/@file:%2F%2F%2F@;s@/@%2F@g' <<< $(dirname $(dirname $PATH_NOM_ICON)))
> 
> #le echo qui suit, sert juste de controle pour la console, peut donc etre supprimé
> echo "$PATH_NOM_ICON
> $PATH_FICHIER_NAUTILUS"
> 
> if [ -e "$HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml" ]; then
> echo "fichier metafile existe"
>     if grep -q $NOM_DOSSIER $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml; then
>          echo "dossier referencé"
>         sed -i 's@\(name="'$NOM_DOSSIER'" timestamp="[0-9]*"\)@\1 custom_icon=".'$NOM_DOSSIER'.png"@' "$HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml"
>     else
>         echo "dossier non referencé"
>         if grep -q "<directory/>" $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml; then
>             echo fichier vierge
>             echo '<?xml version="1.0"?>
> <directory><file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon="'$PATH_NOM_ICON'"/></directory>
> ' > $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
>         else
>             echo fichier non-vierge
>             sed -i 's@</directory>@<file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon=".'$NOM_DOSSIER'.png"/></directory>@' $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
>         fi
>     fi
> else
> echo "fichier metafile existe po"
> echo '<?xml version="1.0"?>
> <directory><file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon=".'$NOM_DOSSIER'.png"/></directory>
> ' > $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
> fi
> 
> echo
> 
> done
dirname: opérande surnuméraire `4.8/Comunication/Courier'
Pour en savoir davantage, faites: « dirname --help ».
basename: opérande manquante
Pour en savoir davantage, faites: « basename --help ».
dirname: opérande surnuméraire `4.8/Comunication/Courier'
Pour en savoir davantage, faites: « dirname --help ».
icotool: /home/fove48/Bordel/icones/fove: cannot open file
icotool: 4.8/Comunication/Courier: cannot open file
icotool: postal/ShedkoFolderico3_835919122.ico: cannot open file
/..png
file:%2F%2F%2F
fichier metafile existe
dossier non referencé
fichier non-vierge

fove48@fove48-Toure:~$ nautilus -q
fove48@fove48-Toure:~$ exit
]]>
Fri, 07 Aug 2009 17:43:02 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2856114#p2856114
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2856093#p2856093 Qu'est ce que tu as comme retour dans le terminal ???
et sinon, c'est bien le paquet icoutils (ou un truc du genre, je me souviens plus, c pour cela que je t'avais dit de taper simplement icotool dans le terminal pourqu'il t'indique quel paquet il faut)

]]>
Fri, 07 Aug 2009 17:33:31 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2856093#p2856093
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2855767#p2855767 Je viens de réessaier se que t'a dis. Rien de nouveaux se passe dans le dossier test, il reste comme si je n'avais rien fais... BOUHOUUU :'( qu'es-ce qui marche pas chez moi ???

]]>
Fri, 07 Aug 2009 14:57:08 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2855767#p2855767
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2855615#p2855615 mais je ne grognais pas à cause du script, je fessait juste allusion à la remarque que j'ai faite compte au test sur l'ordi de son épouse ^^ (un peut et j'allais mettre cette astuce dans la doc ^^)


P.S.: icotool n'est pas dans les dépôts à la place j'ai icoutils

]]>
Fri, 07 Aug 2009 13:49:21 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2855615#p2855615
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2855127#p2855127 fove a écrit :

d'accord, et je retiens que c'est une très bonne astuce de faire des tests sur l'ordi de sa bien aimée. (d'accord je grogne pas du moment que c'est moi qui demande l'aide ^^)

Je vois pas pourquoi tu grognerais, le script ne t'a rien dedruit ! Tu as juste pas réussi à le faire fonctionner !
N'est crainte, ca ne fera rien sur tes documents (il n'y a ni rm ni sudo dans le script).

Lance le en console, tu aura le retour, tu verras ou ca coince.

Pour les test sur l'ordi de ma femme, c'est que j'ai pas le choix, je ne suis pas chez moi, d'ailleurs je vais partir une quinzaine, et je n'aurais surement plus internet, donc tu devras te debrouiller seul pour ce script; Mais je me repete, il fonctionne parfaitement.
N'oublis pas d'installer icotool pour la convertion des ico !

Bonne amusement wink

]]>
Fri, 07 Aug 2009 09:22:52 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2855127#p2855127
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2854809#p2854809 d'accord, et je retiens que c'est une très bonne astuce de faire des tests sur l'ordi de sa bien aimée. (d'accord je grogne pas du moment que c'est moi qui demande l'aide ^^)

]]>
Fri, 07 Aug 2009 01:01:41 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2854809#p2854809
<![CDATA[Réponse à : cherche une comande pr mv -R TT les *.ico present dans repertoire]]> http://forum.ubuntu-fr.org/viewtopic.php?pid=2854587#p2854587 ....

Blague à part,tu as du merder qqlepart !
J'essais tjrs plusieurs fois un script avant de le proposer, chez moi, aucun soucis (si, le fait que les icones disparaissent du bureau, il suffit de relancer nautilus, car pour que les modifs soient prises en compte, il faut faire un "nautilus -q", j'ai oublié de le préciser)

Je reposte le script que j'ai utilisé, avec un check des dossiers avant et apres la lancement du script (dans cette exemple, je ne converti pas les icones (.ico), je copie simplement des png.

#dossier destination
francoise@francoise-laptop:~$ find '/home/francoise/test' 
/home/francoise/test
/home/francoise/test/test.txt~
/home/francoise/test/09.03-tree_icon_columns
/home/francoise/test/dossier1
/home/francoise/test/dossier1/sous_dossier11
/home/francoise/test/dossier1/sous_dossier11/truc.txt
/home/francoise/test/dossier1/sous_dossier12
/home/francoise/test/dossier1/sous_dossier12/truc.txt
/home/francoise/test/dossier1/truc.txt
/home/francoise/test/untxtmachin
/home/francoise/test/test.sh
/home/francoise/test/test.txt
/home/francoise/test/dossier2
/home/francoise/test/dossier2/sous_dossier21
/home/francoise/test/dossier2/sous_dossier21/truc.txt
/home/francoise/test/dossier2/C5817601d01
/home/francoise/test/dossier2/truc.txt
/home/francoise/test/dossier2/sous_dossier22
/home/francoise/test/dossier2/sous_dossier22/truc.txt
/home/francoise/test/dossier2/En-us--fold.ogg
/home/francoise/test/truc
/home/francoise/test/test.sh~
/home/francoise/test/truc.txt
/home/francoise/test/09.03-tree_icon_columns~
#dossier source
francoise@francoise-laptop:~$ find '/home/francoise/test2' 
/home/francoise/test2
/home/francoise/test2/dossier1
/home/francoise/test2/dossier1/sous_dossier11
/home/francoise/test2/dossier1/sous_dossier11/acidrip.png
/home/francoise/test2/dossier1/sous_dossier12
/home/francoise/test2/dossier1/sous_dossier12/accerciser.png
/home/francoise/test2/dossier1/abuse.png
/home/francoise/test2/abiword.png
/home/francoise/test2/dossier2
/home/francoise/test2/dossier2/acroread.png
/home/francoise/test2/dossier2/sous_dossier21
/home/francoise/test2/dossier2/sous_dossier21/aeskulap.png
/home/francoise/test2/dossier2/sous_dossier22
/home/francoise/test2/dossier2/sous_dossier22/adept_manager.png
#retour du script en console
francoise@francoise-laptop:~$ '/home/francoise/test/test.sh' 
/home/francoise/test/dossier1/sous_dossier11/.sous_dossier11.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest%2Fdossier1
fichier metafile existe po

/home/francoise/test/dossier1/sous_dossier12/.sous_dossier12.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest%2Fdossier1
fichier metafile existe
dossier non referencé
fichier non-vierge

/home/francoise/test/dossier1/.dossier1.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest
fichier metafile existe po

/home/francoise/test/.test.png
file:%2F%2F%2Fhome%2Ffrancoise
fichier metafile existe
dossier referencé

/home/francoise/test/dossier2/.dossier2.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest
fichier metafile existe
dossier non referencé
fichier non-vierge

/home/francoise/test/dossier2/sous_dossier21/.sous_dossier21.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest%2Fdossier2
fichier metafile existe po

/home/francoise/test/dossier2/sous_dossier22/.sous_dossier22.png
file:%2F%2F%2Fhome%2Ffrancoise%2Ftest%2Fdossier2
fichier metafile existe
dossier non referencé
fichier non-vierge
#dossier destination apres execution du script
francoise@francoise-laptop:~$ find '/home/francoise/test' 
/home/francoise/test
/home/francoise/test/test.txt~
/home/francoise/test/09.03-tree_icon_columns
/home/francoise/test/dossier1
/home/francoise/test/dossier1/sous_dossier11
/home/francoise/test/dossier1/sous_dossier11/.sous_dossier11.png
/home/francoise/test/dossier1/sous_dossier11/truc.txt
/home/francoise/test/dossier1/sous_dossier12
/home/francoise/test/dossier1/sous_dossier12/.sous_dossier12.png
/home/francoise/test/dossier1/sous_dossier12/truc.txt
/home/francoise/test/dossier1/.dossier1.png
/home/francoise/test/dossier1/truc.txt
/home/francoise/test/untxtmachin
/home/francoise/test/test.sh
/home/francoise/test/test.txt
/home/francoise/test/dossier2
/home/francoise/test/dossier2/.dossier2.png
/home/francoise/test/dossier2/sous_dossier21
/home/francoise/test/dossier2/sous_dossier21/.sous_dossier21.png
/home/francoise/test/dossier2/sous_dossier21/truc.txt
/home/francoise/test/dossier2/C5817601d01
/home/francoise/test/dossier2/truc.txt
/home/francoise/test/dossier2/sous_dossier22
/home/francoise/test/dossier2/sous_dossier22/.sous_dossier22.png
/home/francoise/test/dossier2/sous_dossier22/truc.txt
/home/francoise/test/dossier2/En-us--fold.ogg
/home/francoise/test/truc
/home/francoise/test/test.sh~
/home/francoise/test/truc.txt
/home/francoise/test/09.03-tree_icon_columns~
/home/francoise/test/.test.png

script

#!/bin/bash

#remplacer le png par ico dans la commande find
find /home/francoise/test2 -type f -name *png | while read ligne
do
#remplacer nom du path test2 par test, modifier selon dossier à traiter
NEW_PATH=$(sed 's@test2@test@' <<< "$ligne")

#recuperer nom du dossier a traiter
NOM_DOSSIER=$(basename $(dirname $NEW_PATH))

#path de l'icone
PATH_NOM_ICON="$(dirname $NEW_PATH)/.$NOM_DOSSIER.png"

##decommenter pour l'option choisi, copier l'ico ou convertir en png, au choix
#pour copier simplement l'icone .ico, si cette option est retenue, il faudra egalement remplacer toutes les extensions png par ico dans le script
cp $ligne $(dirname $NEW_PATH)/.$NOM_DOSSIER.png
#pour convertir l'ico en png (il faut icotool installé)
#icotool -x $ligne -o $PATH_NOM_ICON

#nom du fichier dans dossier metafiles
PATH_FICHIER_NAUTILUS=$(sed 's@^/@file:%2F%2F%2F@;s@/@%2F@g' <<< $(dirname $(dirname $PATH_NOM_ICON)))

#le echo qui suit, sert juste de controle pour la console, peut donc etre supprimé
echo "$PATH_NOM_ICON
$PATH_FICHIER_NAUTILUS"

if [ -e "$HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml" ]; then
echo "fichier metafile existe"
	if grep -q $NOM_DOSSIER $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml; then
 		echo "dossier referencé"
		sed -i 's@\(name="'$NOM_DOSSIER'" timestamp="[0-9]*"\)@\1 custom_icon=".'$NOM_DOSSIER'.png"@' "$HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml"
	else
		echo "dossier non referencé"
		if grep -q "<directory/>" $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml; then
			echo fichier vierge
			echo '<?xml version="1.0"?>
<directory><file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon="'$PATH_NOM_ICON'"/></directory>
' > $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
		else
			echo fichier non-vierge
			sed -i 's@</directory>@<file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon=".'$NOM_DOSSIER'.png"/></directory>@' $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
		fi
	fi
else
echo "fichier metafile existe po"
echo '<?xml version="1.0"?>
<directory><file name="'$NOM_DOSSIER'" timestamp="'$(date "+%s")'" custom_icon=".'$NOM_DOSSIER'.png"/></directory>
' > $HOME/.nautilus/metafiles/$PATH_FICHIER_NAUTILUS.xml
fi

echo

done

exit

et pour finir

nautilus -q
nautilus

Comme tu peux le voir, les images ont bien ete copié dans les dossiers correspondants avec comme nom ce même dossier.
Attention, des fichiers sont crées/modifiées dans metafiles, ca n'as pas grande inscidence sur le fonctionnement de nautilus, il est possible, si tu effectue le script plusieurs fois pour le meme dossier, que les icones n'apparaissent pas, ca script n'est à lancer qu'une fois (sinon, les noms d'icones ne ressembleront plus a rien dans les fichiers xml).

Pour lancer un script en console, il faut ouvrir une console, ensuite coller le script dans la console pour avoir le retour des commandes (ca evite que la console s'ouvre et se referme sans que l'on puisse voir quoique ce soit).

PS:je suis sur le portable de ma femme, d'ou le nom de francoise wink

]]>
Thu, 06 Aug 2009 21:23:32 +0000 http://forum.ubuntu-fr.org/viewtopic.php?pid=2854587#p2854587