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 19/11/2009, à 12:52

rafgug

[Résolu] Ls récursif et noms de fichiers

Bonjour à tous!
   J'aimerais faire un petit code bash qui modifie l'encodage de fichiers contenus dans un répertoire de manière récursive. Voici ce que j'ai fait pour l'instant:

for i in `ls -R`
do
if [[ $i == *.php || $i == *.tpl || $i == *.css || $i == *.js ]]
then
echo "$i";
iconv -f ISO8859-15 -t UTF-8 $i > $i
fi
done

Mon problème c'est que tous les fichiers sont enregistrés à la racine après: /aaa/fichier.php est copié dans /fichier.php
Comment faire pour tenir compte de l'arborescence?

Merci! :-)

Raf

Dernière modification par rafgug (Le 19/11/2009, à 15:50)

Hors ligne

#2 Le 19/11/2009, à 13:06

Hawkmoon

Re : [Résolu] Ls récursif et noms de fichiers

remplace la commande

for i in `ls -R`

par

find . -type f

Tagazok à toi, mon frère !

Hors ligne

#3 Le 19/11/2009, à 13:36

sputnick

Re : [Résolu] Ls récursif et noms de fichiers

Vite fais sans avoir testé :

find . -type f -name '*.php' -name '*.tpl' -name '*.css' -name '.js' -exec iconv -f ISO8859-15 -t UTF-8 {} \;

Dernière modification par sputnick (Le 19/11/2009, à 13:37)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 19/11/2009, à 13:46

Hawkmoon

Re : [Résolu] Ls récursif et noms de fichiers

ne doit pas marche.
Find fonctionne avec des ET et non des OU.
Un fichier ne peut pas se terminer par .js ET par .php


Tagazok à toi, mon frère !

Hors ligne

#5 Le 19/11/2009, à 13:53

sputnick

Re : [Résolu] Ls récursif et noms de fichiers

Exact :

find . -type f \( -name '*.php' -o -name '*.tpl' -o -name '*.css' -o -name '.js' \) -exec iconv -f ISO8859-15 -t UTF-8 {} \;

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 19/11/2009, à 13:54

AnsuzPeorth

Re : [Résolu] Ls récursif et noms de fichiers

Bjr,
Plutot: (avec jpg et png en recherche, c'est juste un copier/coller de mes notes smile)

find /home/user/images -iregex ".*\.\(jpg\|png\)"
find /home/user/images -name "*\.jpg" -o -name "*\.png"

Dernière modification par AnsuzPeorth (Le 19/11/2009, à 13:59)


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

Hors ligne

#7 Le 19/11/2009, à 14:54

rafgug

Re : [Résolu] Ls récursif et noms de fichiers

Merci pour votre réponse!
Hawkmoon, j'ai une petite question par rapport à ta réponse: dans mon cas, je parcourais les résultats via la variable i. Puis-je faire de même ici

Merci!

Raf

Hors ligne

#8 Le 19/11/2009, à 15:04

Hawkmoon

Re : [Résolu] Ls récursif et noms de fichiers

find . -type f |while read i
do
 ce que tu veux avec $i
done

NB : les bonnes pratiques interdisent l'utilisation de variables aussi peu "parlantes"


Tagazok à toi, mon frère !

Hors ligne

#9 Le 19/11/2009, à 15:50

rafgug

Re : [Résolu] Ls récursif et noms de fichiers

Merci beaucoup! :-)

Hors ligne

#10 Le 19/11/2009, à 16:20

sputnick

Re : [Résolu] Ls récursif et noms de fichiers

find . -type f -exec bash -c 'echo "something with $1"' -- {} \;

Ca permet des trucs assez chiadés


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne