Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1567 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH] Problème de traitement sur boucle FOR

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BASH] Problème de traitement sur boucle FOR

n°1298561
slywalker
Posté le 10-12-2011 à 12:20:41  profilanswer
 

Bonjour à tous,
 
après pas mal de recherches, je n'arrive pas à solutionner mon problème.
Je souhaite à l'aide d'une boucle for faire un traitement de fichier vidéos pour 3 extensions (avi, mkv et ogm).
Voici la portion de script concernée (et simplifiée, car en réalité je ne fais pas un "echo $VIDEO" ) :

Code :
  1. for VIDEO in "*.avi *.ogm *.mkv"
  2. do
  3. echo $VIDEO
  4. done


Le problème : si par exemple, il n'y avait dans le répertoire que des ".avi", un "echo $VIDEO" me renvoie :

Code :
  1. video_01.avi video_02.avi video_03.avi *.ogm *.mkv


Or les "*.ogm" et "*.mkv" ne sont du coup pas des fichiers à traiter.
 
Une idée ?
 
Merci par avance  :jap:


Message édité par slywalker le 10-12-2011 à 12:22:53
mood
Publicité
Posté le 10-12-2011 à 12:20:41  profilanswer
 

n°1298570
Xpif
Posté le 10-12-2011 à 13:54:31  profilanswer
 

pour les cas d'erreur, on les fout a la poubelle alors (ajout en rouge)
une soluce serait la suivante:
for i in `ls *.avi *.xxx 2>/dev/null`; do echo $i;done


Message édité par Xpif le 11-12-2011 à 12:23:14
n°1298573
slywalker
Posté le 10-12-2011 à 15:47:26  profilanswer
 

Alors ça me renvoie :

Code :
  1. ls: impossible d'accéder à *.ogm: Aucun fichier ou dossier de ce type
  2. ls: impossible d'accéder à *.mkv: Aucun fichier ou dossier de ce type
  3. video_01.avi
  4. video_02.avi
  5. video_03.avi


Donc ça ne me va toujours pas, il faudrait faire disparaitre les 2 premières lignes ...
 
En tout cas merci pour ton aide  :jap:

n°1298583
slywalker
Posté le 10-12-2011 à 20:29:54  profilanswer
 

Pour info, j'ai trouvé la solution. C'était tout con mais je n'était pas parti dans ce sens  :sweat:  

Code :
  1. for VIDEO in `find . -name "*.avi" | cut -d/ -f2 &&  find . -name "*.ogm" | cut -d/ -f2 &&  find . -name "*.mkv" | cut -d/ -f2`
  2. do
  3. echo $VIDEO
  4. done


A mon avis c'est pas propre mais ça marche  :)

n°1298596
Xpif
Posté le 11-12-2011 à 12:24:17  profilanswer
 

j'ai édité mon mesg precedent pour la "gestion"  des erreurs, (passent a la trappe) au cazou
:jap:

n°1299358
sputnick
bip...bip...bip...bip...bi...b
Posté le 20-12-2011 à 12:31:59  profilanswer
 

On ne doit pas mettre de quotes sur un glob !
Et puis il te manque un reglage shopt :

Code :
  1. shopt -s nullglob
  2. for i in *.avi *.ogm *.mkv; do echo "$i"; done


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [BASH] Problème de traitement sur boucle FOR

 

Sujets relatifs
Probleme de dual boot windows 7 et linuxprobleme commande sed, modifs pas enregistrées
probleme installation USBProbleme [Fuduntu] eeePx 900 avec [grub]
[résolu][BASH]commande for foireuse ?Probleme de routage sur un serveur pptp
[Resolu] Problème lecture DVD sous Ubuntu 11.10Problème openvpn - openwrt
Probleme de Profil utilisateur domaine SambaProblème génération et gestion certificats ssl
Plus de sujets relatifs à : [BASH] Problème de traitement sur boucle FOR


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR