#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é
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
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"
done
Dernière modification par Hizoka (Le 28/09/2021, à 08:26)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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é
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
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)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
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é
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
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_NOM
et une autre de pingouinux avec rename dans le post suivant
Dernière modification par ar barzh paour (Le 28/09/2021, à 15:40)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( 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...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#9 Le 06/02/2022, à 17:05
- jose6a
Re : changer tous les noms de fichiers (préfix) se trouvant dans un dossier
helllo les zamis ! bon pardon de ce silence qui n'est pas d'or ...
Merci pour ces informatins ! toujours beaucoup de trucs à apprendre avec Linux ...
Merciiiii
José
Linux jose6a-HP-Laptop-15-fc0xxx 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Hors ligne