Deutsch   English   Français   Italiano  
<t6ee0h$bpf$1@cabale.usenet-fr.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail
From: Olivier Miakinen <om+news@miakinen.net>
Newsgroups: fr.comp.os.linux.configuration
Subject: Re: renommer dossiers AA BB => BB AA
Date: Mon, 23 May 2022 00:38:09 +0200
Organization: There's no cabale
Lines: 77
Message-ID: <t6ee0h$bpf$1@cabale.usenet-fr.net>
References: <628ab233$0$9143$426a74cc@news.free.fr>
NNTP-Posting-Host: 220.12.205.77.rev.sfr.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: cabale.usenet-fr.net 1653259089 12079 77.205.12.220 (22 May 2022 22:38:09 GMT)
X-Complaints-To: abuse@usenet-fr.net
NNTP-Posting-Date: Sun, 22 May 2022 22:38:09 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
 Firefox/52.0 SeaMonkey/2.49.4
In-Reply-To: <628ab233$0$9143$426a74cc@news.free.fr>
Bytes: 2658

Bonjour,

Le 22/05/2022 23:59, Didier a écrit :
> 
> Dans un répertoire j'ai un grand nombre de sous-répertoires
> nommés "AA BB" ou "AA BB CC" (donc avec une ou plusieurs espaces)

Il est généralement considéré comme une mauvaise pratique de mettre
des espaces dans les noms de fichiers ou de répertoires, en tout cas
lorsqu'on veut pouvoir les manipuler ensuite en ligne de commande.

Cela dit, rien ne l'interdit, c'est juste plus compliqué à manipuler.

> que j'aimerais renommer "BB AA" ou "BB CC AA". Certains se
> nomment juste "AA" et resteraient inchangés.

Tout dépend si c'est une manip que tu auras à faire régulièrement, ou
bien si c'est juste à faire une seule fois, parce que tu t'es rendu
compte que tu as mal nommé tes répertoires mais qu'ensuite tu n'y
toucheras plus.

Si c'est le second cas, je ne m'embêterais pas avec un programme bash,
j'utiliserais un script manipulé dans vim.

Voici d'abord mon jeu de tests :

$ mkdir 'A" "AA" "A b" "A b c" "AA bb" "AA bb cc" "AAA bbb" "AAA bbb ccc"
$ ls -1d *
A
AA
'AAA bbb'
'AAA bbb ccc'
'AA bb'
'AA bb cc'
'A b'
'A b c'


D'abord je mets tous les noms avec espace dans un fichier :

$ ls -1d *" "* > moveit


Puis dans vim je fais :

:%s/\([^ ]*\) \(.*\)/mv "&" "\2 \1"/


Le contenu de moveit devient alors :

mv "AAA bbb" "bbb AAA"
mv "AAA bbb ccc" "bbb ccc AAA"
mv "AA bb" "bb AA"
mv "AA bb cc" "bb cc AA"
mv "A b" "b A"
mv "A b c" "b c A"


Et il suffit d'exécuter le script :

$ sh moveit
$ ls -1d *
A
AA
'b A'
'bb AA'
'bbb AAA'
'bbb ccc AAA'
'bb cc AA'
'b c A'
moveit

$ rm moveit


-- 
Olivier Miakinen