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/09/2015, à 14:58

Nicosmos

Renommer des fichiers sur toute une partition ?

Salut,

J’ai pour la première fois depuis peut-être dix ans un ordinateur à dual-boot. Ubuntu d’un côté, Windows de l’autre, et une partition NTFS partagée entre les deux pour les documents. Une grande partie de ces documents proviennent de deux disques précédents : un disque ext3 qui vient d’un ordinateur qui n’a connu que Gnu/Linux, et un disque hfs+ qui ne jurait que par Mac OS. Maintenant les deux sont mélangés.

Mon souci est le suivant : les fichiers de ces disques n’ont jamais pensé être ouverts par Windows un jour. Ils ont plein de de ‘:’, de ‘*’ et de ‘?’ dans leur noms. Ubuntu, ça ne lui pose aucun souci, même si la partition est en NTFS. Windows, lui ne s’y retrouve plus, et refuse d’ouvrir tout dossier contenant un fichier comme ça.

Je voudrais donc faire un script bash pour renommer massivement tous ces fichiers de ma partition.

Le script :
– Listerait récursivement tous les fichiers concernés d’une partition ;
– Ignorerait certains dossiers définis à l’avance ;
– Renommerait les fichiers en question en remplaçant \ / : * ? " < > | par, disons, ‘-’ ;
– Génèrerait un log file avec la liste des changements (pour vérifier si tout c’est bien passé).

C’est pas forcément sous forme de script d’ailleurs, une procédure à suivre avec des commandes à entrer, c’est bien aussi.

Je ne sais pas par où commencer.
J’imagine que les ingrédients principaux sont ls, grep et mv, mais je n’ai pas plus de la recette.

Comment feriez-vous ?
Merci !

Ça pourra servir après à tout ceux qui ont une partition partagée avec Windows et des fichiers venant d’ailleurs :)

Hors ligne

#2 Le 11/09/2015, à 15:17

genma

Re : Renommer des fichiers sur toute une partition ?

Y a https://doc.ubuntu-fr.org/pyrenamer en graphique.

Un truc du genre? A corriger/adapter, c'est pour donner les idées/pistes.

#!/bin/bash
#recherche des fichiers via find, avec les noms contenant les caractères spéciaux 
find . -type f -regex[ *\ / : * ? " < >] | while read -r fichier;
do 
   #faut compléter la liste de |sed On enchaine les sed, un par caractère spécial, qu'on remplace par le tiret
    nouveauNom=`echo $file | sed "s/:/-/g" |sed "s/\:/-/g"|sed "s/\?/-/g"|sed "s/\</-/g" `; 
   #pour tracer le nom de fichier avant après >> c'est pour le cumul des lignes, un seul > ca effacera
    echo "$fichier" "$nouveauNom" >>monfichierlog; 
    # une fois que ça marche tu pourras décommenter et faire le move
    #mv "$fichier" "$nouveauNom" 2>/dev/null; 
done

"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 11/09/2015, à 16:27

gigiair

Re : Renommer des fichiers sur toute une partition ?

Nicosmos a écrit :

Je voudrais donc faire un script bash pour renommer massivement tous ces fichiers de ma partition.

Le script :
– Listerait récursivement tous les fichiers concernés d’une partition ;
– Ignorerait certains dossiers définis à l’avance ;
– Renommerait les fichiers en question en remplaçant \ / : * ? " < > | par, disons, ‘-’ ;
– Génèrerait un log file avec la liste des changements (pour vérifier si tout c’est bien passé).

C’est pas forcément sous forme de script d’ailleurs, une procédure à suivre avec des commandes à entrer, c’est bien aussi.

Je ne sais pas par où commencer.
J’imagine que les ingrédients principaux sont ls, grep et mv, mais je n’ai pas plus de la recette.

Je ne vois pas trop l'intérêt de faire un script pour ça. Une simple commande find qui appelle un rename suffit.

find répertoire1 Chemin/vers/répertoire2 Autre/répertoire -name "*" -exec rename -n  '/\ / : * ? " < > /_/' '{}' \;

J'ai pas testé, mais ça devrait marcher. Pour rendre le renommage effectif, il faut retirer l'option -n


--
JJR.

Hors ligne

#4 Le 13/09/2015, à 13:28

Nicosmos

Re : Renommer des fichiers sur toute une partition ?

Merci !

Celà dit, le problème est résolu malgré moi. Windows m’a dit “hé, ton filesystem est cassé, je peux le réparer” et je lui ai dit “oui oui, vas-y”. Résultat, tous les fichiers dont il n’aimait pas le nom ont été déclassés, mis en quarantaine dans un dossier ‘found’, et renommés en ‘file00000XXX.chk’. Je réouvre, renomme et reclasse tout à partir de là, j’imagine.

Hors ligne