Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/07/2021, à 00:06

DAVIDS99

remplacement accent

Bonjour,

Je souhaite remplacer tous les accents des noms de fichiers comportant é par e.
J'utilise ce script, mais ça ne fonctionne pas avec les noms de fichier avec des espaces.

for f in $(find /share/Partages/ -name "*é*"); do mv "$f" "${f/é/e}"; done

il m'indique No such file or directory

merci pour votre aide.

Modération : balises [ code ] ajoutées

Dernière modification par bruno (Le 11/07/2021, à 10:38)

Hors ligne

#2 Le 11/07/2021, à 05:51

pingouinux

Re : remplacement accent

Bonjour,
Essaye ceci, qui ne remplace que le premier é :

for f in "$(find /share/Partages/ -name "*é*")"; do mv "$f" "${f/é/e}"; done

Si tu veux qu'ils le soient tous :

for f in "$(find /share/Partages/ -name "*é*")"; do mv "$f" "${f//é/e}"; done

Édité :
Et pour éviter d'écraser un fichier qui existe déjà :

for f in "$(find /share/Partages/ -name "*é*")"; do mv -i "$f" "${f//é/e}"; done

Édité (2) :
Autre solution :

find /share/Partages/ -name "*é*" -exec rename -n 's/é/e/g' {} \;

Dernière modification par pingouinux (Le 11/07/2021, à 06:00)

Hors ligne

#3 Le 11/07/2021, à 08:18

nany

Re : remplacement accent

Bonjour,


pingouinux a écrit :

Édité :
Et pour éviter d'écraser un fichier qui existe déjà :

for f in "$(find /share/Partages/ -name "*é*")"; do mv -i "$f" "${f//é/e}"; done

On peut (doit ?) se passer de la commande find :

for f in /share/Partages/*é* ; do mv -i "$f" "${f//é/e}"; done

Hors ligne

#4 Le 11/07/2021, à 09:05

MicP

Re : remplacement accent

Bonjour

Pour éviter l'écrasement d'un fichier existant,
on peut utiliser l'option --backup=numbered de la commande mv

michel@debbull:~/monTest$ ls -l
total 16
-rw-r--r-- 1 michel michel 2 11 juil. 10:07 'nom etale'
-rw-r--r-- 1 michel michel 3 11 juil. 10:08 'nom étale'
-rw-r--r-- 1 michel michel 4 11 juil. 10:08 'nom étalé'
-rw-r--r-- 1 michel michel 5 11 juil. 10:08 'nom étiré'
michel@debbull:~/monTest$ for f in *é*; do mv --verbose --backup=numbered "$f" "${f//é/e}"; done
renommé 'nom étale' -> 'nom etale' (archive : 'nom etale.~1~')
renommé 'nom étalé' -> 'nom etale' (archive : 'nom etale.~2~')
renommé 'nom étiré' -> 'nom etire'
michel@debbull:~/monTest$ ls -l
total 16
-rw-r--r-- 1 michel michel 4 11 juil. 10:08 'nom etale'
-rw-r--r-- 1 michel michel 2 11 juil. 10:07 'nom etale.~1~'
-rw-r--r-- 1 michel michel 3 11 juil. 10:08 'nom etale.~2~'
-rw-r--r-- 1 michel michel 5 11 juil. 10:08 'nom etire'
michel@debbull:~/monTest$ 

Dernière modification par MicP (Le 11/07/2021, à 09:09)

Hors ligne

#5 Le 11/07/2021, à 11:59

DAVIDS99

Re : remplacement accent

Cette commande fonctionne, mais je n'ai pas la récursivité sur les sous dossiers.

for f in /share/Partages/*é* ; do mv -i "$f" "${f//é/e}"; done

Concernant la réponse de  l'execution d'Exec, le rename ne fonctionne pas,  je pense que c''est à cause de la version de linux qui est propriétaire (NAS)  et qui ne possède pas la commande rename :
find /share/Partages/ -name "*é*" -exec rename -n 's/é/e/g' {} \;

Merci pour vos réponses.

Hors ligne

#6 Le 11/07/2021, à 12:30

pingouinux

Re : remplacement accent

DAVIDS99 #5 a écrit :

Cette commande fonctionne, mais je n'ai pas la récursivité sur les sous dossiers.

for f in /share/Partages/*é* ; do mv -i "$f" "${f//é/e}"; done

shopt -s globstar # Pour avoir la récursivité
shopt -s dotglob  # Pour traiter les fichiers cachés

for f in /share/Partages/**/*é* ; do mv -i "$f" "${f//é/e}"; done

Hors ligne

#7 Le 12/07/2021, à 06:23

bruno

Re : remplacement accent

Modération : message #5 - merci d'utiliser les balises [ code ] pour les commandes et les contenus de fichiers :

Saisir des commandes dans un terminal et donner le résultat - Voilà la marche à suivre :

  1. Ouvre le terminal avec ctrl-alt-t

  2. Sélectionne la commande voulue avec un triple clic (ça sélectionne toute la ligne, même la fin si on ne la voit pas)

  3. Colle-la dans le terminal avec un clic molette, valide avec Entrée

  4. Sélectionne et copie tout ce que te dit le terminal depuis la commande jusqu'à la dernière ligne incluse

  5. Clique sur le <> de l'éditeur de message

    1530289742.png

  6. Colle là où se trouve le curseur (entre le ] et le [)

  7. Refais toutes les étapes depuis la 2 pour les autres commandes.