[gull] Commande pour supprimer un espace final dans des noms de dossiers

felix felix at f-hauri.ch
Wed Feb 10 15:58:52 CET 2016


Bonjour,

On Wed, Feb 10, 2016 at 10:47:31AM +0100, Samuel Chenal wrote:
> Le but était de trouver une commande pour virer ce dernier caractère. La
> commande :
> 
> find . -type d -iname "* "
> 
> ... m'a donné plusieurs centaines de dossiers dans ce cas.

:-))

> J'ai construit la commande suivante :
> 
> find . -type d -iname "* " -exec rename -v 's/\ $//g' {} \;
> 
> ... qui semble bien fonctionner. Il faut cependant la lancer plusieurs fois.
> 
> En effet, j'ai l'impression que le find s'exécute pour toute
> l'arborescence et ensuite, il lance le -exec. Et comme certains dossiers
> sont modifiés par le rename, le -exec ne peut plus accéder aux
> sous-dossiers fautifs pour les renommer.

C'est juste!

Le truc c'est que find te présente l'arborescence de la manière suivante:

  /
  /aaa/
  /aaa/bbb
  /aaa/ccc
  /aaa/ddd/
  /aaa/ddd/eee

Et donc, par ordre, su tu renomme ddd avant de renommer eee, la
commande ne trouvera plus eee, puisqu'il n'est plus sous ddd que
tu as déjà renommé.

En fait, je pense que ``tac'' devrait le faire

genre:


  find ... -print | tac | tr \\n \\0 | xargs -0 rename 's/ $//' 

A paufiner, tester!

Bonne chance!

( Sinon: flèche vers le haut + return, tant que ça dure ;-) 

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list