У меня есть ситуация, когда у меня есть некоторые входные файлы, как это:
M2U0001.MPG
M2U0180.MPG
И я хочу запустить команду (в оболочке Bash) для каждого файла с аналогичным именем в каталоге. Мне бы хотелось, чтобы текущее имя файла было задано этой команде в качестве входных данных, а измененная версия имени файла - в качестве выходного файла. Вот пример:
ffmpeg -i M2U0001.MPG M2U0001_fixed.MPG
У меня была идея использовать xargs и sed, но это насколько я понял:
ls -1 *.MPG | xargs -I{} ffmpeg -i {} `echo {} | sed -r 's/[0-9]{2,}/&_fixed/'`
Но это приводит к тому, что исходное имя файла выводится в обе позиции. Я все об этом говорю неправильно?
Я обнаружил, что если я передаю имя файла непосредственно во встроенный фрагмент, то это работает:
echo M2U0001.MPG | sed -r 's/[0-9]{2,}/&_fixed/'