On 12 September 2016 at 21:22, Mike Wright <nobody@xxxxxxxxxxxxxxxxxxxx> wrote: > Hi all, > > This one's not in my unix nutshell book :/ > > Extracting the sound from some music videos (mp4's) into mp3's: > > for f in "$(ls *.mp4)"; do > ffmpeg -i "$f" -c:a libmp3lame "${f%.mp4}.mp3"; > done > > I'm not familiar with this notation: ${f%.mp4}, where $f is the name of an > mp4, e.g. "my favorite video.mp4". Can somebody explain this to me? > This is bash parameter expansion, from the manual page of bash: <quote> ${parameter%word} ${parameter%%word} Remove matching suffix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ``%'' case) or the longest matching pattern (the ``%%'' case) deleted. If parameter is @ or *, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. </quote> so IIUC, it would change "my favorite video.mp4" to "my favorite video.mp3". -- Ahmad Samir -- users mailing list users@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe or change subscription options: https://lists.fedoraproject.org/admin/lists/users@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines Have a question? Ask away: http://ask.fedoraproject.org