#1 Le 28/09/2021, à 07:50
- jose6a

changer tous les noms de fichiers (préfix) se trouvant dans un dossier
Bonjour à tous,
j'ai un soucis, j'aimerai modifier tous les noms (à gauche de l'extension ) des fichiers contenus dans un répertoire dans
un script....j'ai jamais fait. donc c'est chaud.
faire une boucle, et pour chaque fichier
enlever les espaces, les signes spéciaux et caractères accentués du préfixe
passer au suivant.
merci infiniment pour votre aide ! :-)
José
ASUS K75V series
Icore5 8Go Ram
18.04.3 LTS
Hors ligne
#2 Le 28/09/2021, à 08:20
- Hizoka

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
Salut,
Tu as la marche à suivre en effet.
Il faut faire des tests quand tu n'es pas sûr, tu copies des fichiers à traiter dans un dossier test dans lequel tu lance tes commandes.
# pour chaque élément du dossier actuel (fichiers et dossiers)
# Si tu veux du récursif, il faudra passer par une boucle while read avec une commande find.
for Fichier in *
do
# Si vraiment tu ne veux pas toucher aux extensions, il te faut vérifier d'abord que ce sont des fichiers sinon dans le cas de dossier ça va être le bordel
if [[ -f "$Fichier ]]
then
extFichier="${Fichier##*.}"
NomFichier="${Fichier%.*}"
else
extFichier=""
NomFichier="${Fichier}"
fi
# Modifications du nom du fichier, la on remplace les espaces par _ et les é en e en bash
NewFichier="${NomFichier// /_}"
NewFichier="${NewFichier//[éêè]/e}"
# Sinon tu as sed
NewFichier="$(sed "y/éèê/eee/" <<< "$NomFichier")
# On remet l'extension s'il y en a une
[[ "$extFichier" ]] && NewFichier="$NewFichier.$extFichier"
# Vérifie que le nom a changé et que le nouveau nom n'existe pas déjà dans les fichiers avant de renommer le fichier
[[ "$Fichier" != "$NewFichier" && ! -e "$NewFichier" ]] && mv "$Fichier" "$NewFichier"
doneDernière modification par Hizoka (Le 28/09/2021, à 08:26)
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#3 Le 28/09/2021, à 09:51
- jose6a

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
hey !
merci beaucoup pour ta réponse, rapide et détaillée ....
bon, je suis vraiment hyper débutant, et surtout malheureusement, je n'ai besoin
du shell que très très très peu souvant.
j'ai "brutalement" fait un copier coller de ton code dans un terminal (oui, je sais ... c'est nul) , j'imagine que
se serait mieux de le coller dans fichier texte truc.txt et de l'executé avec bash truc.txt ? c'est çà ?
cependant, en collant ton code dans le terminal, j'ai obtenu 2 erreurs qui vont surement te dire quelque chose
(pas à moi) :
<<
> # On remet l'extension s'il y en a une
> [[ "$extFichier" ]] && NewFichier="$NewFichier.$extFichier"
bash: erreur de syntaxe dans une expression conditionnelle
bash: erreur de syntaxe près de « [[ »
> # On remet l'extension s'il y en a une
> [[ "$extFichier" ]] && NewFichier="$NewFichier.$extFichier"
bash: erreur de syntaxe dans une expression conditionnelle
bash: erreur de syntaxe près de « [[ »
>>
Merci de ton aide.
José
ASUS K75V series
Icore5 8Go Ram
18.04.3 LTS
Hors ligne
#4 Le 28/09/2021, à 10:12
- Hizoka

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
Ah ouais, Je te file une ébauche et toi tu la balances comme ça, c'est bien risqué quand même...
Il manque un " à la fin de la ligne NewFichier="$(sed "y/éèê/eee/" <<< "$NomFichier").
Le script n'est pas absolument pas terminé, tu as tout ce qu'il te faut mais il te faut réfléchir à ce que tu veux faire exactement...
Pour le moment, il ne remplace que les é è ê en e...
Dernière modification par Hizoka (Le 28/09/2021, à 10:12)
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne
#5 Le 28/09/2021, à 14:25
- jose6a

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
hello ! oui, c'est risqué, mais, l'ordi sur lequel j'ai testé ne risque rien, d'une part et
d'autres part, j'aime bien apprendre avec les erreurs ![]()
bon ton script etait une ébauche, avec juste un ' " ' manquant ... donc .... déjà super bien !
du coup, en effet, je suis aller fouarfouiller ici : https://www.it-swarm-fr.com/fr/linux/li … 042857628/
j'en ai extrait :
<< for f in * ; do mv -- "$f" "$(tr [:lower:] [:upper:] <<< "$f")" ; done >>
pour tout mettre en majuscule
et une commande "rename" que j'ai installée pour remplacer les é en E
voilà, me reste plus qu'a trouver comment remplaecer les espaces en "_"
quelle aaventura! en tout cas merci pour ton aide !
José
ASUS K75V series
Icore5 8Go Ram
18.04.3 LTS
Hors ligne
#6 Le 28/09/2021, à 15:35
- ar barzh paour

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
voilà, me reste plus qu'a trouver comment remplaecer les espaces en "_"
tu as la une réponse dans le #4
nom="Est-Ce un NOM"
nom="$(sed "y/ /_/" <<< "$nom")"
echo $nom
Est-Ce_un_NOMet une autre de pingouinux avec rename dans le post suivant
Dernière modification par ar barzh paour (Le 28/09/2021, à 15:40)
PC : Intel(R) Pentium(R) CPU G4600 @ 3.60GHz + 4GiB RAM DDR4-2400 Ubuntu 20.04 , 18.04 22.04 (test)
Portable1 : Intel(R) Core(TM)2 Duo CPU T6570 @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 20.04 ( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#7 Le 28/09/2021, à 15:36
- pingouinux

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
Bonjour,
Par exemple, pour changer les noms des fichiers (ou répertoires) ayant une extension de 3 caractères :
rename -n 's/é|è|ê/e/g;s/à|â/a/g;s/ /_/g' *.???Cette commande ne fait rien, et t'indique ce qu'elle fera si tu enlèves -n.
En cas de destination existant déjà, la commande n'écrasera pas le fichier et te préviendra.
Hors ligne
#8 Le 28/09/2021, à 17:31
- Hizoka

Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
Mouais.... pfff.... à peine mieux que ce que je proposais ![]()
C'est une commande que je n'utilise jamais alors qu'elle est bien plus adaptée...
Kubuntu 20.04 64bits
GUI d'extraction de piste de fichier mkv -- Vignettes personnalisées -- Select boosté aux hormones -- Générateur de barre de progression
Hors ligne