Besoin d'aide pour un script shell
Bonjour,
Bonjour,
Je ne sais pas comment donner un titre à mon sujet, désolé mais je vais essayer de vous expliquer!
Voilà, j'ai des sous repertoires qui contiennent des fichiers .exe, dans chaque sous repertoire.
exp: /toto/titi/tata/
dans toto, titi et tata, se trouvent des fichiers .exe
j'aimerai renomer ces fichiers en .txt.
Si j'avais des fichiers .exe uniquement par exemple dans /toto/titi/tata/*.exe, la solution est facile, faire juste:
#!/bin/sh
for i in /toto/titi/tata/*.exe
do
mv $i `basename $i .exe`.txt
done
exit0
sauf que je ne sais pas comment faire pour parcourir tous les repertoir et trouver ces fichiers pour ensuite les renommer.
J'ai pensé à find puis pipe |, mais je n'ai pas d'idée pour la syntaxe
Merci pour votre aide, je suis un débutant sur linux et le shell
Bonjour,
Je ne sais pas comment donner un titre à mon sujet, désolé mais je vais essayer de vous expliquer!
Voilà, j'ai des sous repertoires qui contiennent des fichiers .exe, dans chaque sous repertoire.
exp: /toto/titi/tata/
dans toto, titi et tata, se trouvent des fichiers .exe
j'aimerai renomer ces fichiers en .txt.
Si j'avais des fichiers .exe uniquement par exemple dans /toto/titi/tata/*.exe, la solution est facile, faire juste:
#!/bin/sh
for i in /toto/titi/tata/*.exe
do
mv $i `basename $i .exe`.txt
done
exit0
sauf que je ne sais pas comment faire pour parcourir tous les repertoir et trouver ces fichiers pour ensuite les renommer.
J'ai pensé à find puis pipe |, mais je n'ai pas d'idée pour la syntaxe
Merci pour votre aide, je suis un débutant sur linux et le shell
A voir également:
- Besoin d'aide pour un script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
2 réponses
Salut,
[tmpfs]$ tree . `-- toto |-- fich1.exe |-- fich2.exe |-- fich3.exe `-- titi |-- fich4.exe |-- fich5.exe |-- fich6.exe `-- tata |-- fich7.exe |-- fich8.exe `-- fich9.exe 3 directories, 9 files [tmpfs]$ find . -name '*.exe' -print0 | while read -r -d $'\0' fich; do mv -- "$fich" "${fich%.exe}.txt" done [tmpfs]$ tree . `-- toto |-- fich1.txt |-- fich2.txt |-- fich3.txt `-- titi |-- fich4.txt |-- fich5.txt |-- fich6.txt `-- tata |-- fich7.txt |-- fich8.txt `-- fich9.txt 3 directories, 9 files [tmpfs]$;-))
basename ne fait pas ce que tu crois, ça ne garde que le nom du fichier (par exemple /plop/pouet/tapir.exe devient tapir.exe). Dans ton cas tu peux t'inspirer de ça :
http://blog.lecacheur.com/2004/12/01/shell-supprimer-les-extensions-de-fichiers-en-masse/
En arrangeant un peu le code ça donne :
Bonne chance
http://blog.lecacheur.com/2004/12/01/shell-supprimer-les-extensions-de-fichiers-en-masse/
En arrangeant un peu le code ça donne :
find * | grep "\.exe$" | sed 's/\(.*\)\.\([^\.]*\)/mv \1\.\2 \1.txt/g' | sh
Bonne chance