#1 Le 04/09/2008, à 17:44
- malmsteve
problème de fichiers avec des espaces dans script shell [RESOLU]
Bonjour,
je voudrai convertir des fichiers en mp3 de tous les sous répertoires d'un dossier.
Problème : les fichiers avec des espaces ne rentrent pas dans une variable.....
Et du coup avec le script en exemple ci dessous la variable fic prend les différents morceaux de nom de fichiers compris entre les espaces
for fic in `find /root -name '*.wma' -type f` ; do
echo $fic
done
Quelqu'un aurait-il une idee genialissime pour résoudre ce problème???
Dernière modification par malmsteve (Le 04/09/2008, à 19:24)
Hors ligne
#2 Le 04/09/2008, à 19:07
- Totor
Re : problème de fichiers avec des espaces dans script shell [RESOLU]
Ce problème d'espace est fréquemment soulevé :
find /root -name '*.wma' -a -type f|while read fic
do
echo "${fic}"
done
NB : ce n'et pas une bonne idée d'utiliser le user root
-- Lucid Lynx --
Hors ligne
#3 Le 04/09/2008, à 19:08
- sebk
Re : problème de fichiers avec des espaces dans script shell [RESOLU]
Bonjour,
Tu peux essayer ça...
#!/bin/bash
find /root -name '*.wma' -type f > /tmp/titi
while read fic
do
echo "$fic"
done < /tmp/titi
rm /tmp/titi
Le while read lit le fichier ligne par ligne et pas mot par mot comme le for... in...
Iceberg Project : www.iceberg-linux.net
Hors ligne
#4 Le 04/09/2008, à 19:10
- sebk
Re : problème de fichiers avec des espaces dans script shell [RESOLU]
Ce problème d'espace est fréquemment soulevé :
find /root -name '*.wma' -a -type f|while read fic
do
echo "${fic}"
doneNB : ce n'et pas une bonne idée d'utiliser le user root
Tien... je ne savais pas qu'on pouvait fair un pipe while... je retiens
Iceberg Project : www.iceberg-linux.net
Hors ligne
#5 Le 04/09/2008, à 19:23
- malmsteve
Re : problème de fichiers avec des espaces dans script shell [RESOLU]
Merci beaucoup pour vos réponses ca marche nickel!
je mets le sujet en résolu
bonne soiree a tous
Hors ligne
#6 Le 04/09/2008, à 20:40
- Bigfoot77210
Re : problème de fichiers avec des espaces dans script shell [RESOLU]
Salut,
Tu peux utiliser la variable IFS (Internal Field Separator) du bash.
Ça définit le caractère utilisé par bash comme séparateur.
Par exemple mets
IFS=$'\n'
Bash n'utilisera que le saut de ligne comme séparateur. C'est très pratique.
Pour plus d'info regarde là:
http://chl.be/glmf/morningstar.tuxfamil … ticle.html
APU A10 7700K - Ubuntu 14.10
Hors ligne