Эта команда оболочки преобразует все .avi в .mp4 согласно этому ответу от @ llogan
Может кто-нибудь объяснить, как работает $ {i%. *} ? В частности, что делает%?
for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done
С BashGuide / Параметры / Расширение параметров :
${parameter%pattern} pattern сопоставляется с концом parameter. В результате получается расширенное значение parameter с удалением кратчайшего соответствия.
${parameter%pattern}
pattern
parameter
С Как выполнять манипуляции со строками в bash? :
% означает «удалить кратчайшее возможное совпадение из конца содержимого переменной»
%
Другими словами, если расширенное значение parameter (i в вашем случае ) равен myvideo.avi, тогда %.* приведет к myvideo. Это так, чтобы выходной файл не заканчивался именем myvideo.avi.mp4, а вместо этого именовался myvideo.mp4.
i
myvideo.avi
%.*
myvideo
myvideo.avi.mp4
myvideo.mp4