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