Bonjour à tous,

J'ai besoin d'appliquer la commande ci-dessous à plusieurs centaines de fichiers tous dans le même dossier. Qui pourrait m'indiquer la marche à suivre svp? Je pense qu'il y a moyen de le faire uniquement avec le shell.

You can use TrackAnalyzer like this:
java -jar TrackAnalyzer.jar *.mp3 -w -o results.txt

Par avance merci et bonne soirée.
    for i in `ln -s *.mp3` ; do java -jar TrackAnalyzer.jar *.mp3 -w -o results.txt.$i ; done
    Je ne sais pas à quoi sert cette commande mais apparemment elle s'applique à tous les fichiers avec une extension mp3.
    Donc tu ouvres une console, tu te positionnes dans ton dossier et tu lances ta commande.
    Et tu auras le résultat de la commande dans un fichier results.txt dans ce même dossier.
    Bonsoir et merci de vos réponses,

    J'ai lancé la commande de nouvo09 en me placant au préalable dans le dossier contenant mes .mp3 et en remplaçant ln par ls. Ca semble très bien marcher les infos qu'il me faut sortent sur la console.

    Bonne soirée à tous.
    nouvo09 wrote:for i in `ln -s *.mp3` ; do java -jar TrackAnalyzer.jar *.mp3 -w -o results.txt.$i ; done
    Je ne vois pas l'intérêt d'utiliser cette commande surtout, car elle n'a pas de sens.

    * un "ln -s *.mp3" ?
    * Pourquoi faire une boucle for alors qu'il y a déjà un *.mp3 qui prend en compte tous les fichiers mp3 du répertoire ?
    * Sans parler que cette commande va faire une boucle sur chaque fichier, qui lancera la commande pour tous les fichiers, et créera un fichier results.txt avec le nom de chaque fichier
    (donc s'il y a 100 fichiers mp3, cela lancera la commande 100 fois, et créera 100 fichiers results.txt.xxxx. alors qu'1 fois aurait suffi)

    Qu'est ce qui empêche d'utiliser la commande que tu as citée ? (ne l'ayant pas essayé, je pars du principe que si l'exemple est donné, c'est qu'il fonctionne)
    cd le_repertoire
    java -jar TrackAnalyzer.jar *.mp3 -w -o results.txt
    java -jar TrackAnalyzer.jar /le_dossier/*.mp3 -w -o results.txt
    (le fichier results.txt sera dans le dossier où tu te trouves quand tu la lances)

    Je ne sais pas où se trouve TrackAnalyzer, mais tu peux toujours mettre son emplacement dans ton PATH.

    EDIT: désolé, je viens de voir que chepioq a dit un peu la même chose.
    Sans parler que cette commande va faire une boucle sur chaque fichier, qui lancera la commande pour tous les fichiers, et créera un fichier results.txt avec le nom de chaque fichier
    (donc s'il y a 100 fichiers mp3, cela lancera la commande 100 fois, et créera 100 fichiers results.txt.xxxx. alors qu'1 fois aurait suffi)
    Où est-il dit qu'il fallait un fichier global pour l'ensemble des résultats ? Ce n'est pas précisé et apparemment le demandeur a l'air satisfait de mon interprétation.

    Bien sur j ai fait une faute de frappe, et indiqué ln -s au lieu de ls -l
    nouvo09 wrote:
    Sans parler que cette commande va faire une boucle sur chaque fichier, qui lancera la commande pour tous les fichiers, et créera un fichier results.txt avec le nom de chaque fichier
    (donc s'il y a 100 fichiers mp3, cela lancera la commande 100 fois, et créera 100 fichiers results.txt.xxxx. alors qu'1 fois aurait suffi)
    Où est-il dit qu'il fallait un fichier global pour l'ensemble des résultats ? Ce n'est pas précisé et apparemment le demandeur a l'air satisfait de mon interprétation.

    Bien sur j ai fait une faute de frappe, et indiqué ln -s au lieu de ls -l
    Je parlais du fait que cette commande fait des boucles qu'il n'y a pas besoin.

    Si il y a 100 fichiers, il ne devrait lancer la commande que 1 fois, pas 100 fois.

    Pour faire une comparaison:
    ls -l *.mp3
    ou:
    for i in *.mp3; do ls -l "$i"; done
    
    (EDIT: j'ai corrigé le 2ème exemple que j'avais mal écrit)
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 1.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 2.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 3.mp3
    Ces 2 commandes font la même chose (bien que le 2ème exemple soit plus compliqué et inutile), mais toi tu fais:
    for i in *.mp3; do ls -l *.mp3; done
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 1.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 2.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 3.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 1.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 2.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 3.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 1.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 2.mp3
    -rw-rw-r--. 1 heldwin heldwin 0 18 fév 19:34 File 3.mp3
    Ca refait un ls -l *.mp3, dès qu'il trouve un fichier .mp3 (ici 3 fichiers, donc il lance 3 fois la commande)

    mais bon, tu as raison, s'il est satisfait de ça, je ne sais pas quoi dire de plus...
    C'est pas ce que je voulais dire:

    s'il faut un seul fichier de résultats, tu as raison, mais comme j'ignore ce que fait sa commande, j'ai supposé qu il avait besoin d'un fichier de résultat pour chaque fichier mp3. Et s'il s'agit des tags, c'est logique.
    S'il veut un fichier results.txt pour chaque fichier, ce serait:
    for i in *.mp3; do java -jar TrackAnalyzer.jar "$i" -w -o "results.txt.$i" ; done
    (EDIT: rah, la même erreur 2 fois de suite. ai corrigé ... "$i" pas "$i.mp3" ...)

    En mettant TrackAnalyzer.jar *.mp3, ça ferait 100 fichiers au contenu identique, mais avec un nom différent, contenant chacun 100 lignes pour les 100 fichiers
    Effectivement sur la première commande j'ai l'impression que cela commence à tourner en rond une fois que tous les fichiers ont été analysés ça repart mais ce n'est pas génant pour moi. Je viens de lancer celle-ci :

    cd le_répertoire
    java -jar TrackAnalyzer.jar *.mp3 -w -o results.txt

    Et en effet pas trop besoin de s'embeter ça me fait l'analyse sur tous les fichiers mp3 automatiquement sans en rajouter plus, surement grâce au *.mp3 en tout cas merci à tous les deux 😉

    ++
    9 ans plus tard

    Tshaw Je travaille actuellement sur une application android et je n’ai trouvé aucun autre code/forum pouvant m’aider à determiner un bpm en java c’est pourquoi je deterre cette discussion. Est-ce que quelqu’un saurait comment utiliser cette fameuse bibliothèque TrackAnalyzer dans un code java sous android studio ?? Ou alors peux tu m’indiquer quelles bibliothèques tu as du rajouter à ton gradle ?