Re: convertir des espaces en _ underscore
Merci de toutes vos réponses, mais (retour à la case départ !): 259 [EMAIL PROTECTED] ~/perso/tmp %: find . -name '* *' -exec rename s/ /_/g \{\} \; 260 [EMAIL PROTECTED] ~/perso/tmp %: find . . ./tmp2 ./tmp2/bla bla ./bouh bouh ./ca ca 261 [EMAIL PROTECTED] ~/perso/tmp %: find . -print0 | xargs -0 rename s/ /_/ 262 [EMAIL PROTECTED] ~/perso/tmp %: find . . ./tmp2 ./tmp2/bla bla ./bouh bouh ./ca ca
Re: convertir des espaces en _ underscore
On Thu, Jul 22, 2004 at 11:02:27AM +0200, Bigdeaper wrote: 261 [EMAIL PROTECTED] ~/perso/tmp %: find . -print0 | xargs -0 rename s/ /_/ 262 [EMAIL PROTECTED] ~/perso/tmp %: find . . ./tmp2 ./tmp2/bla bla ./bouh bouh ./ca ca Heu... ça marche chez moi(tm): [EMAIL PROTECTED]:tmp$ find . ./tmp2 ./tmp2/bla bla ./bouh bouh ./ca ca [EMAIL PROTECTED]:tmp$ find . -print0 | xargs -0 rename s/ /_/ [EMAIL PROTECTED]:tmp$ find . ./tmp2 ./tmp2/bla_bla ./ca_ca ./bouh_bouh Tu dois avoir qqch de louche dans ton environement? Y. - qui croyait que l'info, c'était deterministique
convertir des espaces en _ underscore
J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : quelqu'un aurait-il un script pour automatiser cela : tout ce que j'essaie ne marche pas justement a cause des espaces au milieu du nom de fichier !!! Merci B.
Re: convertir des espaces en _ underscore
On Wed, Jul 21, 2004 at 03:36:17PM +0200, Bigdeaper wrote : J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : quelqu'un aurait-il un script pour automatiser cela : tout ce que j'essaie ne marche pas justement a cause des espaces au milieu du nom de fichier !!! man rename rename 's/ /_/' un\ nom\ de\ fichier man find, man xargs pour automatiser le tout. Attention : nom de fichier à espaces a vite fait d'être interprété comme plusieurs noms de fichiers (c'est pour ça qu'il faut lire le man : je ne me souviens plus des détails). Enfin, rename -n pour ne pas faire de bêtises. -- Charles, à nouveaux sous emacs :)
Re: convertir des espaces en _ underscore
* Charles Plessy [EMAIL PROTECTED] [2004-07-21 22:48] : On Wed, Jul 21, 2004 at 03:36:17PM +0200, Bigdeaper wrote : J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : quelqu'un aurait-il un script pour automatiser cela : tout ce que j'essaie ne marche pas justement a cause des espaces au milieu du nom de fichier !!! man rename rename 's/ /_/' un\ nom\ de\ fichier man find, man xargs pour automatiser le tout. Attention : nom de fichier à espaces a vite fait d'être interprété comme plusieurs noms de fichiers (c'est pour ça qu'il faut lire le man : je ne me souviens plus des détails). La doc Info de find propose 2 solutions : - délimiter les noms des fichiers par '' ainsi : find ... -exec rename ... '{}'; (trouvé dans Common Tasks/Strange File Names) - utiliser -print0 (et xargs) : find ... -print0 | xargs -r -0 rename ... (trouvé dans Finding Files/Contents). TMTOWTDI Fred -- Comment poser les questions de manière intelligente ? http://www.gnurou.org/documents/smart-questions-fr.html Comment signaler efficacement un bug ? http://www.chiark.greenend.org.uk/~sgtatham/bugs-fr.html
Re: convertir des espaces en _ underscore
On Wed, Jul 21, 2004 at 03:36:17PM +0200, Bigdeaper wrote: J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : rename fait ça: rename s/ /_/ * quelqu'un aurait-il un script pour automatiser cela : tout ce que j'essaie ne marche pas justement a cause des espaces au milieu du nom de fichier !!! En principe, tous les programmes et scripts devraient marcher correctement avec des noms de fichiers qui contiennent des espaces... sinon, ce sont des bugs. Y.
Re: convertir des espaces en _ underscore
Le probleme vient du fait que tout les fichiers ne sont pas forcement dans le meme repertoire, mais je vais essayer de me pencher sur les solution du premier embranchement du fil. Merci a tous.
Re: convertir des espaces en _ underscore
Le mercredi 21 Juillet 2004 15:54, Yves Rutschle a écrit : On Wed, Jul 21, 2004 at 03:36:17PM +0200, Bigdeaper wrote: J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : rename fait ça: rename s/ /_/ * Très fort, et comment peut-on faire pour que tous les fichiers d'un répertoire et de ses sous-répertoires soit renommés ainsi ? -- @+, Claude
Re: convertir des espaces en _ underscore
Le Wed, 21 Jul 2004 17:18:59 +0200 Claude Reveret [EMAIL PROTECTED] a écrit: Le mercredi 21 Juillet 2004 15:54, Yves Rutschle a écrit : On Wed, Jul 21, 2004 at 03:36:17PM +0200, Bigdeaper wrote: J'aimerais automatiser la conversion des espaces en underscore dans mes noms de fichier d'un repertoire donne : rename fait ça: rename s/ /_/ * Très fort, et comment peut-on faire pour que tous les fichiers d'un répertoire et de ses sous-répertoires soit renommés ainsi ? un truc du genre: rename s/ /_/ `find chemin_répertoire_racine -type f`
Re: convertir des espaces en _ underscore
On Wed, Jul 21, 2004 at 07:49:14PM +0200, Gaëtan PERRIER wrote: Très fort, et comment peut-on faire pour que tous les fichiers d'un répertoire et de ses sous-répertoires soit renommés ainsi ? Ah, l'énoncé du sujet disait LES fichiers d'UN répertoire. un truc du genre: rename s/ /_/ `find chemin_répertoire_racine -type f` Non, justement car les espaces font croire au shell qu'il s'agit d'autant de fichiers... Il faut être plus conservateur: find . -print0 | xargs -0 rename s/ /_/ (Ça marche d'ailleurs aussi sur les répertoires, mais ça s'emmèle un peu les pinceaux pour les fichiers qui sont dans un répertoire qui a changé de nom... Donc on doit pouvoir faire mieux.) Y. - find dinner/ -type f | xargs munchlist
Re: convertir des espaces en _ underscore
Le mercredi 21 Juillet 2004 20:56, Yves Rutschle a écrit : find . -print0 | xargs -0 rename s/ /_/ Merci (Ça marche d'ailleurs aussi sur les répertoires, mais ça s'emmèle un peu les pinceaux pour les fichiers qui sont dans un répertoire qui a changé de nom... Donc on doit pouvoir faire mieux.) Y. - find dinner/ -type f | xargs munchlist -- @+, Claude Le clergé est une compagnie qui a le privilège exclusif de voler par la séduction. -+- Claude-Hadrien Helvetius (1715-1771) -+-
Re: convertir des espaces en _ underscore
Yves Rutschle a écrit : On Wed, Jul 21, 2004 at 07:49:14PM +0200, Gaëtan PERRIER wrote: Très fort, et comment peut-on faire pour que tous les fichiers d'un répertoire et de ses sous-répertoires soit renommés ainsi ? Ah, l'énoncé du sujet disait LES fichiers d'UN répertoire. un truc du genre: rename s/ /_/ `find chemin_répertoire_racine -type f` Non, justement car les espaces font croire au shell qu'il s'agit d'autant de fichiers... Il faut être plus conservateur: find . -print0 | xargs -0 rename s/ /_/ (Ça marche d'ailleurs aussi sur les répertoires, mais ça s'emmèle un peu les pinceaux pour les fichiers qui sont dans un répertoire qui a changé de nom... Donc on doit pouvoir faire mieux.) find . -name '* *' -exec rename s/ /_/g \{\} \; ?
Re: convertir des espaces en _ underscore
#!/bin/bash # blank-rename.sh # # Substitutes underscores for blanks in all the filenames in a directory. ONE=1 # For getting singular/plural right (see below). number=0 # Keeps track of how many files actually renamed. FOUND=0 # Successful return value. for filename in * #Traverse all files in directory. do echo $filename | grep -q # Check whether filename if [ $? -eq $FOUND ] #+ contains space(s). then fname=$filename # Strip off path. n=`echo $fname | sed -e s/ /_/g` # Substitute underscore for blank. mv $fname $n # Do the actual renaming. let number += 1 fi done if [ $number -eq $ONE ] # For correct grammar. then echo $number file renamed. else echo $number files renamed. fi exit 0
Re: convertir des espaces en _ underscore
On Wed, Jul 21, 2004 at 09:53:47PM +0200, Astar0th wrote: (Ça marche d'ailleurs aussi sur les répertoires, mais ça s'emmèle un peu les pinceaux pour les fichiers qui sont dans un répertoire qui a changé de nom... Donc on doit pouvoir faire mieux.) find . -name '* *' -exec rename s/ /_/g \{\} \; ? Hmm, ça ne semble pas marcher mieux: [EMAIL PROTECTED]:~/tmp$ find . ./blah blah ./hello world ./hello world/bleh bleh [EMAIL PROTECTED]:~/tmp$ find . -name '* *' -exec rename s/ /_/g \{\} \; find: ./hello world: No such file or directory [EMAIL PROTECTED]:~/tmp$ find . ./hello_world ./hello_world/bleh bleh ./blah_blah (Ça marche jusqu'à ce que ça déplace un répertoire...) Y.
Re: convertir des espaces en _ underscore
On Wed, Jul 21, 2004 at 10:06:17PM +, Younes Zouhair wrote: #!/bin/bash # blank-rename.sh # # Substitutes underscores for blanks in all the filenames in a directory. ONE=1 # For getting singular/plural right (see below). number=0 # Keeps track of how many files actually renamed. FOUND=0 # Successful return value. for filename in * #Traverse all files in directory. do echo $filename | grep -q # Check whether filename if [ $? -eq $FOUND ] #+ contains space(s). then fname=$filename # Strip off path. n=`echo $fname | sed -e s/ /_/g` # Substitute underscore for blank. mv $fname $n # Do the actual renaming. let number += 1 fi done if [ $number -eq $ONE ] # For correct grammar. then echo $number file renamed. else echo $number files renamed. fi exit 0 Félicitation, c'est une façon très longue de dire: rename s/ /_/g * Ça ne résoud pas le problème des sous-répertoires. Y.
Re: convertir des espaces en _ underscore
On Thu, Jul 22, 2004 at 02:37:30AM +0100, Yves Rutschle wrote : Ça ne résoud pas le problème des sous-répertoires. À mon avis, il faut un truc récursif du genre : Boucle : si (Répertoires) alors pour chaque (Répertoires) cd répertoire Boucle sinon rename_tout_dans_le_répertoire return -- Charles