Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: beer 31 Července 2012, 02:13:05

Název: hromadná konverze pomocí avconv v bashi
Přispěvatel: beer 31 Července 2012, 02:13:05
potřeboval bych konvertovat soubory, například z amr do mp3 či ogg.

původně jsem zkusil ffmpeg, ale píše to, že v dalších verzích nebude.
$ ffmpeg -i *.amr *.mp3

vytvořilo to soubor *.mp3.

Když dám to samé s avconv, také to vytvoří soubor *.mp3.

Já bych byl rád, aby příkaz byl vykonán na všechny soubory ve složce a aby zachoval jejich jména, ale aby se změnila koncovka + kodek. Proč to interpretuje hvězdičku jako zástupný (žolíkový) znak pouze na vstupu a nikoliv na výstupu?
Název: Re:hromadná konverze pomocí avconv v bashi
Přispěvatel: beer 31 Července 2012, 08:39:02
Mohlo by fungovat toto?

Nejsem u stroje, kde bych to nyní mohl vyzkoušet.

Kód: [Vybrat]
#!/bin/bash
ls -1 *.amr|while read line;
do avconv -i "$line" "$line".mp3;
done
Název: Re:hromadná konverze pomocí avconv v bashi
Přispěvatel: starenka 31 Července 2012, 21:07:50
jo, jen misto ls bych pouzil find (http://mywiki.wooledge.org/ParsingLs)
Název: Re:hromadná konverze pomocí avconv v bashi
Přispěvatel: ntz_reloaded 31 Července 2012, 21:19:59
nikdy nepouzivejte ls pro vyber souboru do cyklu :D .. to radsi printf
Název: Re:hromadná konverze pomocí avconv v bashi
Přispěvatel: beer 01 Srpna 2012, 01:31:46
OK, díky. Vyzkoušel jsem, a toto funguje:

Kód: [Vybrat]
#!/bin/bash
find *.amr|while read line;
do avconv -i "$line" "$line".mp3;
done

Jen pro zajímavost, jak by to vypadalo s printf?