IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Boucle liste fichiers dans répertoire


Sujet :

Shell et commandes GNU

  1. #1
    Invité
    Invité(e)
    Par défaut Boucle liste fichiers dans répertoire
    Bonjour à tous !

    J'aimerai mettre en place un script shell (#!/bin/sh) qui me permet de parcourir le contenu d'un dossier /home/mondossier et de mettre en variable le nom des fichiers et leur extension pour lancer une commande les uns après les autres.

    En clair, j'ai un dossier qui contient un bon nombre de vidéos MOV et je ne veux pas m'amuser à chaque fois, lancer la commande de conversion ffmpeg pour les convertir en MPG

    la commande que j'utilise est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ffmpeg -i mavideo001.mov mavideo001.mpg
    Pouvez-vous m'aider pour bien partir dans le script ? Je pense qu'il me faut gérer une boucle sur le contenu du dossier et récupérer le nom du fichier en cours à chaque fois. Maintenant comment fait-on ?

    Merci A+

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 453
    Points
    19 453
    Par défaut
    En gros :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for video in tonRepertoire/*
     do
       ffmpeg -i $video ${video%.*}.mpg
    done
    cf. man bash

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup c'est très gentil ! Je viens d'apprendre à faire ma première boucle for

    Comment peut-on récupérer le répertoire en cours ?

    Imaginons que mon script sh est à la racine de mon rep perso : /home/moi

    mes vidéos sont sous la hiérarchisation suivante :

    /home/moi/videos/un_dossier/video001.mov
    /home/moi/videos/un_dossier/video002.mov
    /home/moi/videos/un_autre_dossier/video001.mov
    /home/moi/videos/un_autre_dossier/video002.mov

    Ca serai pas mal que je puisse faire un ffmpeg avec en sortie

    /home/moi/videos/toutes_les_videos/un_dossier_001.mpg
    /home/moi/videos/toutes_les_videos/un_dossier_002.mpg
    /home/moi/videos/toutes_les_videos/un_autre_dossier_001.mpg
    /home/moi/videos/toutes_les_videos/un_autre_dossier_002.mpg
    etc.

    sachant qu'on ne connait pas le nom des dossiers "un_dossier" et "un_autres_dossier" etc., ceci changerons au fur et à mesure de l'ajout des MOV en fait.

    Merci vraiment pour ta réponse en tout cas

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 582
    Points : 19 453
    Points
    19 453
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/bin/bash
     
    function Recursive
    {
       local tonRep=$1
       for video in $tonRep/*
        do
          [ -f $video ] && {
             destVideo=$(basename $video)
             srcVideo=$(dirname $video)
             echo "ffmpeg -i $video toutes_les_videos/${srcVideo#*/}_${destVideo%.*}".mpg
          } || {
             [ -d $video ] && {
                Recursive $video
             }
          }
       done
    }
     
    [ $1 ] && {
       Recursive $1
    } || {
       echo " Il faut indiquer le répertoire où se trouve les vidéos à convertir "
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ./boucleRecursive.sh videos
    ffmpeg -i videos/un_autre_dossier/video001.mov toutes_les_videos/un_autre_dossier_video001.mpg
    ffmpeg -i videos/un_autre_dossier/video002.mov toutes_les_videos/un_autre_dossier_video002.mpg
    ffmpeg -i videos/un_dossier/video001.mov toutes_les_videos/un_dossier_video001.mpg
    ffmpeg -i videos/un_dossier/video002.mov toutes_les_videos/un_dossier_video002.mpg

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mouarf ! la tu m'as bluffé !

    ça marche impeccable ! plus qu'à faire la bonne sortie ffmpeg à la place de l'echo !

    je vais essayer de voir pour rajouter des conditions du genre si le fichier existe déjà etc.

    Franchement ! Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle liste fichier
    Par koKoTis dans le forum Langage
    Réponses: 3
    Dernier message: 23/10/2008, 08h58
  2. Lister fichiers dans répertoire
    Par Yin Zhen dans le forum Fortran
    Réponses: 5
    Dernier message: 29/09/2008, 13h57
  3. Réponses: 3
    Dernier message: 06/05/2008, 14h32
  4. 10G-WORD Recherche de fichiers dans répertoire
    Par Marcel Chabot dans le forum Forms
    Réponses: 10
    Dernier message: 01/05/2008, 16h12
  5. Droits création-écriture fichier dans répertoire
    Par BATiViR dans le forum Delphi
    Réponses: 7
    Dernier message: 02/07/2007, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo