Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 01/08/2009, à 17:34

fove

cherche une comande pr mv -R TT les *.ico present dans repertoire

Bonjour,
et désolé d'emblée pour le titre a peine compréhensible mais j'ai eu du mal a exprimer toute la complication de ma demande avec aussi peut d'espace.

Cette demande (pas si compliqué que sa) viens du fait que je suis un ex-windobien et comme l'arborescence de mon dossier personnel est profonde j'ai attribuer une icône à la majorité des dossiers pour pouvoir m'y retrouver, en maitant cette icône dans le répertoire auquel elle est associée et en configurant un desktop.ini.

Jusque là pas de soucis sauf qu'au passage à ubuntu, comme ce dernier ne fonctionne pas avec le desktop.ini, mes dossier ont recouvert l'apparence par défaut des dossiers d'ubuntu.


Quand j'ai remarquer sa, j'ai d'abord fait une copie complète de mon dossier personnel sur ma machine ubuntu puis j'ai fait une seconde copie de l'arborescence, je veux dire par la que j'ai copier le dossier personnel en supprimant tout se qui se trouvait à l'intérieur des dossier à l'exception des icones. Se dossier je l'ai appelé "amputé"

Se que je cherche donc a faire c'est :

1) de renommer, apr ligne de commande, l'icone (donc le fichier *.ico) contenue dans chaque dossier et sous-dossier de "amputé" de sorte que celle-ci ai le même nom que son dossier contenant avec un point au début (pour l'invisibilité) et, évidement, un .ico à la fin (parce-que sa n'est pas déjà le cas).

2) Copier les icônes de "amputé" dans mon dossier personnel en restaurant correctement l'arborescence (par exemple si "exemple.ico" se trouve dans   .../amputé/Bibliothéque alors elle devra se retrouvée dans ~/Bibliothéque)

3) et la si c'est possible se serait le pied, à savoir que -par ligne de commande- le *.ico de mon $HOME s'attribue au répertoire qui le contient.


Voila, j'espère ne pas avoir demander quelque-chose de trop compliqué comme j'ai l'habitude de le faire ^^ et j'espère aussi avoir été suffisamment explicite.


A bientôt et bonne journée !


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#2 Le 01/08/2009, à 18:46

S2S

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

salut,

1) de renommer, apr ligne de commande, l'icone (donc le fichier *.ico) contenue dans chaque dossier et sous-dossier de "amputé" de sorte que celle-ci ai le même nom que son dossier contenant avec un point au début (pour l'invisibilité) et, évidement, un .ico à la fin (parce-que sa n'est pas déjà le cas).

on peut traité directement les dossiers qui contiennent un '.ico', pas besoin, je pense, du dossier '/amputé/' (ou explique la raison)
on peut caché les .ico (avec un fichier '.hidden' par exemple) et renommé, pas de souci.
mais je ne sait pas si les .ico sont utilisable (jamais essayé), il faut certainement les convertir (essaie et dit nous ci ça passe...ou pas) mais ça na rien de compliqué.

2) Copier les icônes de "amputé" dans mon dossier personnel en restaurant correctement l'arborescence (par exemple si "exemple.ico" se trouve dans   .../amputé/Bibliothéque alors elle devra se retrouvée dans ~/Bibliothéque)

comme '1)', on renomme et convertie directement dans les dossiers, ça sera plus simple

3) et la si c'est possible se serait le pied, à savoir que -par ligne de commande- le *.ico de mon $HOME s'attribue au répertoire qui le contient.

on comprend bien que c'est le but de la maneuvre wink
pas encore trouvé la commande, juste pour le moment que cela est gérer par nautilus via des fichiers '.xml' dans '~/.nautilus/metafiles/'.
une fois cette dernière commande trouvé, ça ira tout seul...


portable: Toshiba Qosmio x500 12Q
fixe: P5N72-T Premium//Core2Quad-Q9550//7950GT//2048DDR2
OS: 10.04 - 10.10 - 11.04, 7
... qui croit tout savoir, n'en saura jamais plus ...

Hors ligne

#3 Le 01/08/2009, à 18:50

TheBootroo

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

euh pour mettre un .ico en icone de dossier tu peux toujours rever roll
le reste ca doit etre faisable mais moi je suis pas un pro de la CLI

sous linux les icones sont des .png ou .svg

le ico c un format tout pourri

par contre gimp peu ouvrir les .ico et ensuite les enregistrer en .png
generalement dans un .ico t'a plusieurs couches (une par taille : 16x16 32x32 48x48 ; et par mode : 256 couleurs, 16bits , 24 bits ...) donc avec gimp tu garde que la plus haute resolution et tu vire les autre, ensuite tu enregistre en .png

voila tout ce que peux te dire neutral


ALLEZ VISITER MON SITE INTERNET :
http://modern-os.projects.servhome.org/
(différents sous-projets visant a créer une distro linux plus orienté débutant et complètement anti-geek)
developpeurs C++/Qt et graphistes (SVG surtout) motivés :  rejoignez-nous !!! VOUS POUVEZ DESORMAIS VOUS INSCRIRE.

Hors ligne

#4 Le 01/08/2009, à 19:29

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

@S2S et @TheBootroo moi même j'ai été étonné que les *.ico puissent attribués au dossier, sa marche en passant par menu contextuel-->Propriété-->Le bouton icône

@S2S dans le 1) il se trouve que le dossier $HOMME ne contient pas les icônes c'est pour sa la première copie que j'ai faites a négligée les *.ico se qui fait que la seconde a négligée tout le reste sauf les *.ico cela dis, c'est mieux de traiter la chose comme sa pour éviter qu'une mauvaise manœuvre entache les autres documents.
Pour le .hidden je trouve qu'il n'est pas aussi pratique le point devant le nom, dans certaines fenêtres l'effet du .hidden est carrément ignoré, se qui fait que les images d'icônes réapparaissent et m'encombrent.


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#5 Le 01/08/2009, à 19:35

TheBootroo

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

O.o


ALLEZ VISITER MON SITE INTERNET :
http://modern-os.projects.servhome.org/
(différents sous-projets visant a créer une distro linux plus orienté débutant et complètement anti-geek)
developpeurs C++/Qt et graphistes (SVG surtout) motivés :  rejoignez-nous !!! VOUS POUVEZ DESORMAIS VOUS INSCRIRE.

Hors ligne

#6 Le 01/08/2009, à 20:13

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Ben vas y essaille ^^


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#7 Le 01/08/2009, à 20:15

TheBootroo

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

bah justement j'ai a peu pres 2500 .ico dans un dossier et quand je vais dedans il m'affiche rien : il veut pas de .ico ....


ALLEZ VISITER MON SITE INTERNET :
http://modern-os.projects.servhome.org/
(différents sous-projets visant a créer une distro linux plus orienté débutant et complètement anti-geek)
developpeurs C++/Qt et graphistes (SVG surtout) motivés :  rejoignez-nous !!! VOUS POUVEZ DESORMAIS VOUS INSCRIRE.

Hors ligne

#8 Le 01/08/2009, à 23:46

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

bizaaard ! chez moi y'a aucun soucis ! (t'es bien sous jaunty ?). mais même si cette fonctionnalité marche, personnellement je prèfert toujours, pour mon problème, convertir ico-->png avant d'attribuer.

Dernière modification par fove (Le 01/08/2009, à 23:46)


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#9 Le 02/08/2009, à 14:58

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

un ti up... (au passage si la seule comnde existante n'est valable qu'avec les png sa ne me dérange pas)


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#10 Le 02/08/2009, à 16:02

AnsuzPeorth_out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Bjr,
Bon, je pense y etre arrivé (en tout cas, chez moi ca fonctionne sur mes dossiers de test)
Déjà, les ico sont compatibles, donc pas obligé de convertir en png, au choix.
Pour la convertion, il faut icotool (tape icotool dans le terminal pour savoir quel paquet installer)

C'est un premier jet, si le script fonctionne, il faudrait utiliser plus de variable et des fonctions pour reduire le code.
Faire des essais avant, bien sur smile

J'ai  2 dossiers, test et test2. Les images sont dans le dossier test2 (dossier et sous-dossier), les modifs sont donc dans le dossier test.
Il faudra modifier le script à ta convenance. Je n'ai recherché que les png pour mes test, donc à modifier également.

J'ai du faire pas mal de controle sur l'existence du fichier xml correspondant, ce qui allourdi un peu le truc, mais vu que pour mes essais les dossiers crée n'etait pas referencé, j'etais un peu obligé de proceder de la sorte (c'est pas plus mal, ca pourra fonctionner de la premiere fois).

#!/bin/bash
#remplacer le png par ico dans la commande find
find /home/user/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.ico
#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
nautilus -q
exit

Voilà, fait des tests et tiens moi au jus wink (que j'optimise le bazard)

#11 Le 03/08/2009, à 14:53

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Attends, je m'y connais pas encore bien avec les scripts, je dois faire quoi au juste ??


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#12 Le 03/08/2009, à 16:10

AnsuzPeorth-out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

fove a écrit :

Attends, je m'y connais pas encore bien avec les scripts, je dois faire quoi au juste ??

Dsl, je croyais que tu t'y connaissais un peu !

Bon, pour faire simple, donne moi le path des dossiers à traiter (CAD le chemin du dossier source et celui du dossier cible) genre: /home/user/dossier_source et /home/user/dossier_cible.
Ensuite, veux tu convertir les ico en png ou copier simplement les ico (qui passe bien avec ubuntu, mais là, c'est ton choix).
Avec ces infos, je modifierais le script, comme cela, tu verras comment ca se passe, il te suffira ensuiite de modifier le chemin pour les test (tjrs faire des tests avant smile)

Hors ligne

#13 Le 03/08/2009, à 16:55

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Déjà je préfert avoir des png que des ico,
ensuite le dossier source est /home/fove48/Bordel/icones et la cible est /home/fove48/Bordel/Test


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#14 Le 03/08/2009, à 17:04

AnsuzPeorth-out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Comme suit ca devrait etre bon

#!/bin/bash
#emlacement du dossier source dans find
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
nautilus -q
exit

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)

Hors ligne

#15 Le 05/08/2009, à 12:08

AnsuzPeorth-out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Si le code que je t'ai proposé fonctionne, passe le sujet en résolu, sinon, dis où ca coince !

Hors ligne

#16 Le 05/08/2009, à 15:53

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

J'ai juste l'habitude de prendre le temps de me renseigner et de comprendre se que je fais, c'est se qui explique que j'ai tarder avant d'éxecuter et donc de rendre une réponse.


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#17 Le 06/08/2009, à 21:35

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

Désolé, j'avais poster un message juste après avoir posté le précédant et aujourd'hui, je me rends compte qu'il n'y est pas (???).

Je disais dans se message, que j'ai appliquer tes instructions AnsuzPeorth-out et que juste après, la console est brusquement apparut pour aussitôt disparaitre et aussi que les icônes ont disparut de mon bureau, de même que j'arrivais plus à donner le focus au bureau et pour finir, il s'est rien passé dans mon dossier de destination...


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#18 Le 06/08/2009, à 23:23

AnsuzPeorth-out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

....

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

Dernière modification par AnsuzPeorth-out (Le 07/08/2009, à 00:08)

Hors ligne

#19 Le 07/08/2009, à 03:01

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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 ^^)


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#20 Le 07/08/2009, à 11:22

AnsuzPeorth-out

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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

Hors ligne

#21 Le 07/08/2009, à 15:49

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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

Dernière modification par fove (Le 07/08/2009, à 16:50)


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#22 Le 07/08/2009, à 16:57

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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 ???


ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#23 Le 07/08/2009, à 19:33

AnsuzPeorth

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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)

Dernière modification par AnsuzPeorth (Le 07/08/2009, à 19:37)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#24 Le 07/08/2009, à 19:43

fove

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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

ACTA attaque l'internet attaquons ACTA
Black-aout contre ACTA sur Ubuntu-fr.org : http://forum.ubuntu-fr.org/viewtopic.php?id=376173
Soutenons la quadrature du net : http://www.laquadrature.net/fr/acta-attaque-linternet-attaquons-acta

Hors ligne

#25 Le 08/08/2009, à 00:21

AnsuzPeorth

Re : cherche une comande pr mv -R TT les *.ico present dans repertoire

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 ....


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

Haut de page ↑