script bash + espace dans nom de fichier = help!!! - Linux et OS Alternatifs
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.
Marsh Posté le 21-06-2002 à 10:09:12
./mp3.sh "le fichier avec des espaces"
et normalement $1 contiendra la bonne valeur
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 "_".
Marsh Posté le 21-06-2002 à 10:22:09
minusplus a écrit a écrit : ben renome tes fichiers :
|
ç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
Marsh Posté le 21-06-2002 à 10:26:27
minusplus a écrit a écrit : ben renome tes fichiers :
|
'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 ...
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....
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.
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
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
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
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...
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 .
Marsh Posté le 21-06-2002 à 10:50:07
./mp32ogg.sh $(ls -Q *.mp3)
et apres ya bien tout ce qu'il faut dans $*
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
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é
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.
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....
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 "\ "...
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é...
donc on fini par oublier un peu .... en plus là il est quand meme l'heure de dormir ce qui ne facilite pas la reflexion...
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. |
ça marche trés bien !
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
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