Bash renomer fichier à la volé

Fermé
GeRgOs - 22 juin 2010 à 18:59
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 23 juin 2010 à 07:32
Bonjour,

J'essaye de renomer les fichiers d'un repertoire au fomat "mon_fichier_a_moi.ext" en "mon fichier a moi.ext" .

J'ai essayé cela :

function do_rename()
{
        a=$(echo $1 | sed -e "s/_/\/g")
        if test "$a" != "$1"
        then
                mv "$1" $(echo $1 | sed -e "s/_/\/g")
        fi
}

find $1 -type f | while read a
do
        do_rename "$a";

done


Mais ça ne semble pas fonctionner .

De la meme maniere j'aimerais pouvoir changer la fin de tous mes fichiers de la maniere suivante :

Passé de "mon fichier a moi.ext" en "mon fichier a moi~50.ext"

Si quelqu'un a des idées .

Merci .
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 juin 2010 à 19:18
Salut,

Déjà ton expression avec "sed" est foireuse ;-((

sed -e "s/_/\/g"

Ça ça remplace l'underscore par un antislash :-\

Ensuite, autant se servir du remplacement des paramètres directement avec le shell :

[tmpfs]$ A="mon_fichier_avec_plein_de_tirets_bas.txt"

[tmpfs]$ echo "${A}"
mon_fichier_avec_plein_de_tirets_bas.txt

[tmpfs]$ echo "${A//_/ }"
mon fichier avec plein de tirets bas.txt

[tmpfs]$

;-))
0
Oui mais je veut qu'il soit dans un script car il se lance apres la recuperation des dit fichiers sur un serveur distant .

Et il y a 20-30 fichiers à chaques fois .
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 juin 2010 à 07:32
C'était juste un exemple, à adapter par la suite à ton cas :

mv "${A}" "${A//_/ }"
0
et je veut pas qu'il renome dans un fichier txt, mais directement les fichiers du repertoire :)
J'vais plus avoir de cheveux :)
0