#1 Le 23/01/2017, à 17:17
- hazertyck
[Résolu] Script de renommage -> retirer le début du nom d'un dossier
Bonjour,
Je cherche un moyen de scripter un renommage de dossier.
En gros j'ai des sous dossiers qui ont un nom du genre .INBOX.bonjour, .INBOX.tralala ou encore .INBOX.yolo et je souhaite les renommer en .bonjour, .tralala et .yolo (donc retirer ".INBOX" de tous les dossiers)
Je cherche comment scripter ça parce que c'est dans le cadre d'une migration d'un serveur mail, et me taper tous les renomage à la mano c'est pas imaginable
Une idée ?
J'avais cherché du côté de
find . -type f -name ".INBOX*" -exec ...
Mais je ne sais pas quoi mettre à la place de "..."
Je vous remercie
Dernière modification par hazertyck (Le 26/01/2017, à 09:09)
Hors ligne
#2 Le 23/01/2017, à 17:31
- Hizoka
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
salut,
tout simplement :
find . -type f -name "*.INBOX.*" -exec rename -n 's/.INBOX//' {} \;
si c'est bon, retire le -n
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 23/01/2017, à 17:32
- pingouinux
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
Bonjour,
Si ce sont des répertoires :
find . -depth -type d -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\.//' {} \;
et enlever -n si c'est bon.
Pour des fichiers, il suffit de :
find . -type f -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\.//' {} \;
Ajouté : Et si le point doit rester devant le nom du fichier
find . -depth -type d -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\././' {} \;
find . -type f -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\././' {} \;
Dernière modification par pingouinux (Le 23/01/2017, à 19:53)
Hors ligne
#4 Le 23/01/2017, à 17:34
- Compte anonymisé
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
Bonjour,
pour ton cas de figure je me servirai de "rename"
shopt -s globstar
rename 's/\.INBOX/.bonjour/' **/.INBOX.*
EDIT : grillé tu as même l’embarras du choix
Dernière modification par Compte anonymisé (Le 23/01/2017, à 17:35)
#5 Le 23/01/2017, à 18:37
- Hizoka
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
pingouinux => Perso ça ne me renvoie rien si je fais -name ".INBOX*".
il me faut -name "*.INBOX*"
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 23/01/2017, à 18:48
- pingouinux
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
@Hizoka #5 : Tu m'étonnes…
$ mkdir -p .INBOX.bonjour/.INBOX.bonsoir ;touch .INBOX.bonjour/.INBOX.bonsoir/.INBOX.bye
$ find -name ".INBOX*"
./.INBOX.bonjour
./.INBOX.bonjour/.INBOX.bonsoir
./.INBOX.bonjour/.INBOX.bonsoir/.INBOX.bye
$ find -name "*.INBOX*"
./.INBOX.bonjour
./.INBOX.bonjour/.INBOX.bonsoir
./.INBOX.bonjour/.INBOX.bonsoir/.INBOX.bye
Hors ligne
#7 Le 23/01/2017, à 19:16
- Hizoka
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
ha ok... perso j'ai pas compris le problème comme ça moi...
je pensais qu'il y avait des fichiers :
fichier.INBOX.zip
fichier2.INBOX.torrent
fichier3.INBOX.tar
...
et non des fichiers qui commencent par un point.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 24/01/2017, à 11:44
- hazertyck
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
Merci à tous pour vos réponses.
Alors l'architecture c'était bien :
─me@DEBIAN ~/Desktop/mail/
╰─$ ls -al
drwx------ 6 me me 4096 Jan 23 17:30 .INBOX.Bijour
drwx------ 6 me me 4096 Jan 23 17:31 .INBOX.Bonsoir
drwx------ 6 me me 4096 Jan 23 17:31 .INBOX.Coucou
J'ai utilisé la commande de pingouinux :
find . -depth -type d -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\././' {} \;
==> sans le -n bien entendu une fois testé.
Je vous remercie encore tous (et si c'est pas trop demandé, pingouinux, peux tu m'expliquer la partie 's/^.\/\.INBOX\././' de la commande ?)
Dernière modification par hazertyck (Le 24/01/2017, à 11:46)
Hors ligne
#9 Le 24/01/2017, à 17:03
- pingouinux
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
Le nom renvoyé par find ressemble à ceci
./.INBOX.bonsoir
La syntaxe de rename
rename 's/chaîne_à_remplacer/chaîne de remplacement/' liste_de_fichiers
find . -depth -type d -name ".INBOX*" -execdir rename -n 's/^.\/\.INBOX\././' {} \;
Ici on remplace ./.INBOX. situé en début de nom (^) par un point .
/ est remplacé par \/, pour ne pas le confondre avec le délimiteur de chaînes.
. signifie n'importe quel caractère, et il est remplacé par \. qui signifie juste un point.
En toute rigueur, il aurait aussi fallu échapper le . qui suit ^, mais il n'y a pas de confusion possible car tous les noms de fichiers commencent ici par ./
Hors ligne
#10 Le 25/01/2017, à 15:40
- hazertyck
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
Super
J'ai adapté pour un autre besoin que j'avais (ou cette fois-ci tout finissait par @gmail.com que je voulais simplement effacer)
find . -depth -type d -name "*" -execdir rename -n 's/\@gmail\.com$//' {} \;
it works !
thanks
Dernière modification par hazertyck (Le 25/01/2017, à 15:41)
Hors ligne
#11 Le 25/01/2017, à 16:42
- Hizoka
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
find . -depth -type d -name "*" -execdir rename -n 's/\@gmail\.com$//' {} \;
=
find . -depth -type d -execdir rename -n 's/\@gmail\.com$//' {} \;
si c'est tout bon, ajoute [résolu] dans ton titre
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 26/01/2017, à 09:09
- hazertyck
Re : [Résolu] Script de renommage -> retirer le début du nom d'un dossier
yep c'est fait !
Merci Hizoka
Hors ligne