OVH Cloud OVH Cloud

convertir des espaces en _ underscore

15 réponses
Avatar
Bigdeaper
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.



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
Charles Plessy
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 :)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frederic Bothamy
* Charles Plessy [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


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
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.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Bigdeaper
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.



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Claude Reveret
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


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Gaëtan PERRIER
Le Wed, 21 Jul 2004 17:18:59 +0200
Claude Reveret 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`
Avatar
Yves Rutschle
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


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Claude Reveret
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) -+-


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Astar0th
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" {} ;
?


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Younes Zouhair
#!/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


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2