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
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 :
find * | grep "\.exe$" | sed 's/\(.*\)\.\([^\.]*\)/mv \1\.\2 \1.txt/g' | sh