Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/06/2009, à 16:08

mbouvet

[Script bash] liste de fichiers contenant des blancs - RESOLU

Bonjour,

J'ai écrits des petits scripts de traitements vidéo pour me faciliter la vie, ces scripts fonctionnent bien mais je voudrais les encapsuler dans un script de plus haut niveau pour effectuer un traitement sur l'ensemble des fichiers avi  d'un répertoire. J'ai essayer une syntaxe à base de

i=0
for bidule in `ls`
do
    fichier[$i]=$bidule
    //ici appeler mon script avec ${fichier[i]} en argument
    ((i++))
done

Cela fonctionne si les fichiers ne contiennent pas le caractère blanc ' ' . Malheureusement beaucoup de mes *.avi possèdent des blancs. Comment faire sans renommer les fichiers ? j'ai trouvé un script à base de sed qui renomme les blancs en _ mais le problème reste identique pour généraliser le traitement à l'ensemble d'un répertoire ... Je précise que le pb ne vient pas des scripts appelés (c'est bien géré a ce niveau) mais du 'for bidule in `ls`' qui split avec les blancs..

Une idée ?

Merci

Dernière modification par mbouvet (Le 08/06/2009, à 22:14)


Ubuntu 11.04 64bits / Q8400,4Gio / SSD Vertex 2 / 8600GTS - LCD22"+ TV Sony KDL-37V4710

Hors ligne

#2 Le 08/06/2009, à 16:16

gilbert

Re : [Script bash] liste de fichiers contenant des blancs - RESOLU

salut,

tu peux modifier la variable IFS.

save=$IFS;
IFS=$'\t\n' # on ne choisit que le passage à la ligne et les tabulations comme séparateur
fichier[$i]=$bidule;

mais si j'étais toi je ré-écriais le code comme cela :

declare -a fichier #fichier est un tableau
save=$IFS;
IFS=$'\t\n'
fichier=($(ls))
for(( i=0; i<${#fichier[*]}; i++ )); do
    //ici appeler ton script avec ${fichier[i]} en argument
done
IFS=$save

Dernière modification par gilbert (Le 08/06/2009, à 16:25)


Simplement moi-même..

Hors ligne

#3 Le 08/06/2009, à 16:25

Totor

Re : [Script bash] liste de fichiers contenant des blancs - RESOLU

Ou tout simplement :

#!/bin/bash
fichier=( * )

et si tu ne souhaites que les avi :

#!/bin/bash
fichier=( *.avi )

EDIT : gilbert ... pourquoi utiliser ls wink


-- Lucid Lynx --

Hors ligne

#4 Le 08/06/2009, à 16:26

gilbert

Re : [Script bash] liste de fichiers contenant des blancs - RESOLU

Totor a écrit :

EDIT : gilbert ... pourquoi utiliser ls wink

Parce que j'ai simplement repris son code smile


Simplement moi-même..

Hors ligne

#5 Le 08/06/2009, à 16:26

mbouvet

Re : [Script bash] liste de fichiers contenant des blancs - RESOLU

Merci, Je teste ce soir (la je suis au taf).


Ubuntu 11.04 64bits / Q8400,4Gio / SSD Vertex 2 / 8600GTS - LCD22"+ TV Sony KDL-37V4710

Hors ligne

#6 Le 08/06/2009, à 22:13

mbouvet

Re : [Script bash] liste de fichiers contenant des blancs - RESOLU

gilbert a écrit :

mais si j'étais toi je ré-écriais le code comme cela :

declare -a fichier #fichier est un tableau
save=$IFS;
IFS=$'\t\n'
fichier=($(ls))
for(( i=0; i<${#fichier[*]}; i++ )); do
    //ici appeler ton script avec ${fichier[i]} en argument
done
IFS=$save

J'ai pris cette option, ça marche nickel !
Merci pour le tuyau smile


Ubuntu 11.04 64bits / Q8400,4Gio / SSD Vertex 2 / 8600GTS - LCD22"+ TV Sony KDL-37V4710

Hors ligne