Re: [LA-discussions] questions bash

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


Le 12/01/2011 22:41, Brice Lopez a écrit :
Salut,

petite question aux spécialistes du shell. J'ai un dossier contenant 13 épisodes nommés "gantz s01e01.mkv", "gantz s01e02.mkv", etc.

Les mkv étant mal foutus, je voudrais les nettoyer et les re-multiplexer avec mkcleaner. Malheureusement, le script ne permet pas de faire un "mkclean --remux ./*".

J'ai donc essayé un "for gantz in $(ls); do mkclean --remux $gantz; done". Mais comme les noms de fichiers contiennent des espaces, il cherche sans succès le fichier "gantz", puis le fichier "s01e01", etc.

J'ai aussi essayé "for gantz in $("ls"); do mkclean --remux $gantz; done", ça ne marche pas mieux. Du coup, j'ai lâchement résolu le problème à coup d'underscore.

Si quelqu'un a la vraie solution, ça m'intéresse.

--
Brice Lopez


---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


il y a aussi la solution de redéfinir la variable IFS (mais dangereux)
"internal field separator"
pour consulter: set | grep IFS
ça vous permet de voir les caractères qui servent de séparateurs (espace, tabulation, retour chariot)
vous supprimez l'espace le temps d'une commande

sinon traitement séquentiel par ligne avec while/read
du type

find . -name "grantz*.mkv" | while read l ; do mkclean --remux "${l}" ; done

cette commande est plus confortable pour la réutiliser à des fins plus larges
ça a l'intérêt de pouvoir traiter des sous dossiers par exemple

find . -maxdepth 1 -name "grand*.mkv" | while read l ; do echo mkclean --remux "${l}" ; done

en limitant le niveau de profondeur de recherche de sous dossier via -maxdepth

je n'utilise pas ls

---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/