script bash + espace dans nom de fichier = help!!!

script bash + espace dans nom de fichier = help!!! - Linux et OS Alternatifs

Marsh Posté le 21-06-2002 à 09:59:14    

slt tous, j ai entrepris d'écrire un script shell (bash) pour convertir mes mp3 en ogg mais je suis confronté à un problème qui a pour origine windaube : l utilisation d espace dans les noms de fichier :crazy:
 
j utilise la variable $* pour attribuer un nom de fichier ,situé dans un repertoire, à la variable $i.
 
La variable $i vas donc prendre pour valeur le nom du fichier qui est en faite un paramètre de ma commande et le problème sous *nix est ke un espace sert à séparer les paramètres.
 
je me retrouve donc avec une variable qui s appelle "02" au lieu de "02 Air - ..."  
ou "02\ Air - ..." !!!
 
k elle est l astuce SVP :cry:

Reply

Marsh Posté le 21-06-2002 à 09:59:14   

Reply

Marsh Posté le 21-06-2002 à 10:07:22    

En faite je récupère le nom du fichier passé en paramètre à l aide de la variable $1.
Le prob est ke ca ne marche pas avec les fichier ayant des espaces.

Reply

Marsh Posté le 21-06-2002 à 10:09:12    

./mp3.sh  "le fichier avec  des espaces"    
 
et normalement $1 contiendra la bonne valeur


Message édité par Poltergeist le 21-06-2002 à 10:09:49

---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 21-06-2002 à 10:10:40    

yank a écrit a écrit :

En faite je récupère le nom du fichier passé en paramètre à l aide de la variable $1.
Le prob est ke ca ne marche pas avec les fichier ayant des espaces.  




 
normal unix n'est pas fait pour gerer les noms avec des espaces, normallement il existe des trucs de converstion de nom de fichiers expres pour solutionner ça au pire retourne dans windaube et change le nom en remplaceant les " " par des "_".


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 10:12:16    

ben renome tes fichiers :  
 


rename 's/ /_/g' *.mp3

Reply

Marsh Posté le 21-06-2002 à 10:22:09    

minusplus a écrit a écrit :

ben renome tes fichiers :  
 


rename 's/ /_/g' *.mp3

 




 
ça marche meme avec l'espace ça ? j'y avais pensé mais je doutais que l'espace soit pris en compte par le REN....
 
j'aurrai appris un truc


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 10:26:27    

minusplus a écrit a écrit :

ben renome tes fichiers :  
 


rename 's/ /_/g' *.mp3

 



'Marche pas ton truc. Et je comprends pas le man de rename ...
 
 
-- EDIT : Ah, si, ça y est, j'ai compris le man. Par contre, je vois pas le rapport avec ta commande. Je cherche ...


Message édité par Jak le 21-06-2002 à 10:30:33
Reply

Marsh Posté le 21-06-2002 à 10:27:41    

Jak a écrit a écrit :

'Marche pas ton truc. Et je comprends pas le man de rename ...  




 
quel message d'insulte l'ecran t'as envoyé ??
je me disais bien que les espaces marchaient pas....


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 10:31:05    

kuroineko a écrit a écrit :

 
 
quel message d'insulte l'ecran t'as envoyé ??
je me disais bien que les espaces marchaient pas....  



Justement, il n'envoie rigoureusement rien.
Par contre, je vois bien ce qu'il veut faire, et c'est pas con. 'doit y avoir un détail à la con qui manque.


Message édité par Jak le 21-06-2002 à 10:32:35
Reply

Marsh Posté le 21-06-2002 à 10:31:05    

jak> idem mais j ai compris le man :)
 
poltergeist> bein merci à toi. Il a suffit ke je mette $* entre "" pour ke ca marche :)

Reply

Marsh Posté le 21-06-2002 à 10:31:05   

Reply

Marsh Posté le 21-06-2002 à 10:35:59    

yank a écrit a écrit :

jak> idem mais j ai compris le man :)
 
poltergeist> bein merci à toi. Il a suffit ke je mette $* entre "" pour ke ca marche :)  




 
OK merci du tuyau :jap:


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 10:42:31    

mince après vérification :  
 
./mp32ogg.sh *.mp3 ne marche pas avec la technique "$*"
 
je serais obligé de taper ./mp32ogg.sh "*.mp3" mais c est po grave :)

Reply

Marsh Posté le 21-06-2002 à 10:42:50    

kuroineko a écrit a écrit :

normal unix n'est pas fait pour gerer les noms avec des espaces, normallement il existe des trucs de converstion de nom de fichiers expres pour solutionner ça au pire retourne dans windaube et change le nom en remplaceant les " " par des "_".


MOUAHAHAHAHAHAHAHAHHAHAAAAAAAAAAAAAAAAAAAAAAAA !!!!!!!!!!!!!!!!!!!
 
Unix gère très bien les noms avec des espaces, et contrairement à d'autres systèmes, il les gère nativement, pas avec des extensions porcines sur un nom 8.3...


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 21-06-2002 à 10:46:22    

yank a écrit a écrit :

mince après vérification :  
 
./mp32ogg.sh *.mp3 ne marche pas avec la technique "$*"
 
je serais obligé de taper ./mp32ogg.sh "*.mp3" mais c est po grave :)  




 
pour avoir un listing de noms quotés  fait un ls -Q *.mp3 .


---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 21-06-2002 à 10:50:07    

./mp32ogg.sh $(ls -Q *.mp3)
 
et apres ya bien tout ce qu'il faut dans $*


Message édité par Poltergeist le 21-06-2002 à 10:50:51

---------------
c'est etonnant comme on peut se passer de l'essentiel du moment qu'on a les petits plaisirs de la vie
Reply

Marsh Posté le 21-06-2002 à 11:17:00    

C'est normal, il ne faut pas utiliser $* mais "$@"
Et ce de manière générale dans tous tes scripts.
Le problème vient surtout des gens qui ne savent pas faire des script et qui remplacent les espaces dans les noms de fichiers et non de windows:lol:
Il y a encore beaucoup de scripts/programmes qui ne fontionnent pas avec des fichiers dont le nom contient espaces...
 
Si les fichiers ne sont pas passés en argument, tu as d'autres solutions, par exemple :
ls -b
find /toto -print0 | xargs -0

Reply

Marsh Posté le 21-06-2002 à 11:36:15    

Jar Jar a écrit a écrit :

MOUAHAHAHAHAHAHAHAHHAHAAAAAAAAAAAAAAAAAAAAAAAA !!!!!!!!!!!!!!!!!!!
 
Unix gère très bien les noms avec des espaces, et contrairement à d'autres systèmes, il les gère nativement, pas avec des extensions porcines sur un nom 8.3...  




 
je me suis mal exprimé je voulais dire qu'il ne les gerait pas en ligne directe mais seulement entre "" et '' ...dézolé


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 11:38:42    

kuroineko a écrit a écrit :

je me suis mal exprimé je voulais dire qu'il ne les gerait pas en ligne directe mais seulement entre "" et '' ...dézolé


C'est uniquement un problème de shell, et encore il les gère très bien avec les \.
Si tu fais du C, ou n'importe quel autre langage, les espaces ne posent pas le moindre problème.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 21-06-2002 à 11:43:00    

Jar Jar a écrit a écrit :

C'est uniquement un problème de shell, et encore il les gère très bien avec les \.
Si tu fais du C, ou n'importe quel autre langage, les espaces ne posent pas le moindre problème.  




 
 "\ " ? je connaissais meme pas... decidement faut que je revoye toutes ces petites syntaxes sympa et pratiques....


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 12:44:58    

kuroineko a écrit a écrit :

 "\ " ? je connaissais meme pas... decidement faut que je revoye toutes ces petites syntaxes sympa et pratiques....


Déjà, quand tu fais la complétion sur un nom avec un espace, il rajoute tout seul les "\ "...


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 21-06-2002 à 12:48:35    

Jar Jar a écrit a écrit :

Déjà, quand tu fais la complétion sur un nom avec un espace, il rajoute tout seul les "\ "...  




 
moi j'ai tellement l'habitude de taper des noms avec _ que finalement la gestion des espaces je suis rarement concerné...
:lol: donc on fini par oublier un peu .... en plus là il est quand meme l'heure de dormir  :sleep: ce qui ne facilite pas la reflexion...


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-06-2002 à 14:02:14    

Jak a écrit a écrit :

Justement, il n'envoie rigoureusement rien.
Par contre, je vois bien ce qu'il veut faire, et c'est pas con. 'doit y avoir un détail à la con qui manque.  



:heink: ça marche trés bien ! :??:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed