Je veux compresser toute ma collection de musique (une copie, en fait) en utilisant boiteux. Il y a donc naturellement des dossiers dans les dossiers et des caractères étranges possibles dans les noms de fichiers. J'ai aussi utilisé le graphique soundconverter, mais je ne l'ai pas aimé car il a des débits prédéfinis.
Ce que j'ai essayé jusqu'à présent:
$ find . -name "*.mp3" | lame -b 160
et
$ find . -name "*.mp3" > list
$ cat list | lame -b 160
et
$ lame -b 160 < list
Tout cela me donne une erreur d'utilisation. Quelle est la bonne façon de le faire? Aussi, s'il y a un moyen de écraser le fichier d'origine , je serai trop heureux.
lame
ne peut pas lire les noms de fichiers depuis l'entrée. Vous devrez utiliser -exec
ou find
de xargs
pour l'exécuter sur chaque fichier trouvé:
find . -iname '*.mp3' -exec lame -b {} \;
Si un deuxième nom de fichier n'est pas spécifié, lame
joindra un autre .mp3
au nom de fichier donné et écrira dans ce fichier. lame
ne supporte pas l'écriture dans le même fichier. Vous devrez convertir un autre fichier, puis le copier sur le fichier d'origine:
find . -iname '*.mp3' -exec sh -c 'lame -b 160 "$0" "$0"-160 && mv "$0"-160 "$0"' {} \;
Essayez ce qui suit:
Commencez par supprimer les espaces blancs des noms de fichiers, car ceux-ci semblent poser problème:
for f in $(find . -name "*.mp3"); do rename "s/\s+/_/g" *; done
Exécutez une boucle et parcourez tous les fichiers:
for f in $(find . -name "*.mp3"); do lame -b 160 "$f" tmp && mv tmp "$f"; done
Maintenant, vous allez écraser les fichiers originaux avec ceux créés par lame.