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 23/01/2017, à 18: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 smile

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 "..." big_smile

Je vous remercie

Dernière modification par hazertyck (Le 26/01/2017, à 10:09)

Hors ligne

#2 Le 23/01/2017, à 18: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, à 18: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, à 20:53)

Hors ligne

#4 Le 23/01/2017, à 18: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é smile tu as même l’embarras du choix

Dernière modification par Compte anonymisé (Le 23/01/2017, à 18:35)

#5 Le 23/01/2017, à 19: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, à 19: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, à 20: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, à 12: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, à 12:46)

Hors ligne

#9 Le 24/01/2017, à 18: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, à 16: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 smile

Dernière modification par hazertyck (Le 25/01/2017, à 16:41)

Hors ligne

#11 Le 25/01/2017, à 17: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 smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#12 Le 26/01/2017, à 10: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