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 08/12/2012, à 07:34

blackdalhia

[Manipulation de fichier] Copie de fichier recursif [resolu]

Bonjour,
Ma bibliothèque de mp3 est constituée d'un dossier Musique ayant l'arborescence classique Artiste/Album dans un répertoire Musique.
J'ai mis dans chaque dossier un fichier "folder.jpg" qui est l'image de la pochette de l'album. (J'ai mis du temps mais c'est fait et c est chouette dans xbmc !)
Le problème est que certains programme utilise non pas "folder.jpg" mais ".folder.jpg" (par exemple xbmc en mode bobliotheque ou Clementine...) roll

je voudrais donc créer un programme qui fait la chose suivante:
- Parcours tous les dossiers contenu dans le dossier Musique de manière récursive:
   - Si le dossier ne contient pas de fichier ".folder.jpg" on regarde si il existe un fichier "folder.jpg"
     - Si c est le cas on copie le fichier "folder.jpg" pour créer ".folder.jpg"

Quel langage est le plus adapte pour créer un script tout simple faisant ce type d actions ?

merci ! smile

Blackdalhia

Dernière modification par blackdalhia (Le 09/12/2012, à 03:28)

Hors ligne

#2 Le 08/12/2012, à 08:15

Hizoka

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

Salut,
un simple script bash fera l'affaire smile

perso je ferais plutot une recherche sur les fichiers folder.jpg et je regarderai apres si la version .folder existe ou non

# Boucle cherchant les fichiers folder.jpg
while read
do
  # Si le fichier .folder.jpg n'existe pas on le cree
  [[ ! -f "${REPLY%/*}/.folder.jpg" ]] && cp "${REPLY}" "${REPLY%/*}/.folder.jpg"
done < <(find ton_dossier -iname "folder.jpg")

=> J'ai pas testé, avant de l'executer, remplace :

[[ ! -f "${REPLY%/*}/.folder.jpg" ]] && cp "${REPLY}" "${REPLY%/*}/.folder.jpg"

par

[[ ! -f "${REPLY%/*}/.folder.jpg" ]] && echo "le fichier ${REPLY%/*}/.folder.jpg n'existe pas, on pourrait donc copier le fichier ${REPLY}"

Dernière modification par Hizoka (Le 08/12/2012, à 08:15)

Hors ligne

#3 Le 08/12/2012, à 08:41

tiramiseb

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

J'ajouterais qu'un lien symbolique serait plus approprié qu'une copie


Sébastien Maccagnoni-Munch - administrateur Linux depuis le XXe siècle
Consultant informatique indépendant - http://www.smm-informatique.fr
Geek et tout plein d'autres choses - http://www.tiramiseb.fr

En ligne

#4 Le 08/12/2012, à 09:07

Hizoka

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

en effet smile

du coup la ligne :

[[ ! -f "${REPLY%/*}/.folder.jpg" ]] && cp "${REPLY}" "${REPLY%/*}/.folder.jpg"

deviendrait

[[ ! -f "${REPLY%/*}/.folder.jpg" ]] && ln -s "${REPLY}" "${REPLY%/*}/.folder.jpg" 

Hors ligne

#5 Le 08/12/2012, à 11:20

blackdalhia

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

Hello
merci pour vos reponses super rapide !

J'ai cree le script d'Hikoza sous le nom addfolder.sh. J'ai cree un repertoir Temp dans lequel j'ai mis le .sh et un repertoire avec quelques dossier tests

# Boucle cherchant les fichiers folder.jpg
while read
do
  # Si le fichier .folder.jpg n'existe pas on le cree
  [[ ! -f "${REPLY%/*}/.folder.jpg" ]] && echo "le fichier ${REPLY%/*}/.folder.jpg n'existe pas ${REPLY}"
done < <(find "/media/Data/tmp/Temp/Test" -iname "folder.jpg")

J'ai lance le script avec

sudo sh addfolder.sh

J obtiens un message d'erreur : "addfolder.sh: 6: addfolder.sh: Syntax error: redirection unexpected"
J‘ai du merdouille au niveau du nom du dossier (j'ai aussi essaye avec "Test" au lieu de l'adresse relative mais ca donne la meme chose ...

Hors ligne

#6 Le 08/12/2012, à 12:32

Postmortem

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

Salut,
Tu ne devrais pas lancer ta commande avec sudo et sh devant.
Il faut rendre le script exécutable :

chmod 755 /chemin/addfoler.sh

Puis l'exécuter ainsi :

/chemin/addfolder.sh
# ou
cd /chemin
./addfolder.sh

Si tu mets sh devant, le script est exécuté avec sh. Si tu ne mets pas sh, il est exécuté avec ton shell courant, généralement bash. Et le script que Hizoka t'a donné contient de la syntaxe spécifique à bash.
D'ailleurs, pour etre certain que le script s'exécute en bash, rajoute ceci en première ligne :

#!/bin/bash

Pour sudo, il est nécessaire que si tu n'as pas les droits d'écriture sur ton arbo.

Edit :
L'idée d'utiliser les liens symboliques est bonne mais si tes fichiers musicaux sont sur une partition FAT ou NTFS, ça ne fonctionnera pas.

Re-edit :
Et si ton script est sur une partition FAT ou NTFS, tu ne pourras pas le rendre exécutable avec la commande que je t'ai fournie. Il sera exécutable ou non selon les options de montage de la partition. Si tu ne peux pas l'exécuter en l'appelant comme je te l'ai indiqué, il faut l'appeler ainsi :

bash /chemin/addfolder.sh
# ou
cd /chemin
bash addfolder.sh

Dernière modification par Postmortem (Le 08/12/2012, à 12:46)


Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#7 Le 08/12/2012, à 14:49

blackdalhia

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

Super ca marche !! Merci beaucoup !
J ai opte pour la solution de copie car je ne sais pas si les liens symboliques marcheraient sous WIndows.... c est un peu bourrin mais efficace.

Par contre je me heurte a un autre soucis : les image ne sont toujours pas lu en mode bibliotheque sous XBMC... va falloir que je creuse cote XBMC et tag mp3 ....

en tout cas un gros merci a Postmortem et Hizoka !

Hors ligne

#8 Le 08/12/2012, à 19:59

Hizoka

Re : [Manipulation de fichier] Copie de fichier recursif [resolu]

En effet non compatible avec windows smile
tu as bien fait de copier.

en effet mon code était en bash je ne l'ai pas priciser...

apres pour xbmc, je peux pas t'aider...

si c'est resolu, precise le dans ton titre de topic.

Hors ligne

Haut de page ↑