Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen 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: 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