t=lkj
echo ${t:0:${#t}-1}
]
[] Вы получаете подстроку от 0 до длины строки -1. Обратите внимание, однако, что это вычитание специфично для бэша и не будет работать на других оболочках.[
] []Например, []dash[
] не может разобрать даже[
echo ${t:0:$(expr ${#t} - 1)}
]
[]Например, на Ubuntu, []/bin/sh[
] это []dash[
][
Я не уверен, что понимаю эту команду. Почему вы кладете - до% f?
Попробуйте это:
xfce4-terminal -e "parallel avconv -i '{}' -map 0:1 -c:a copy '{}.m4a' ::: %F"
Объяснение: Как я понимаю,% f - это то, что Thunar заменяет файлы, а параллельно использует ::: для ввода.
Одним из примеров в MANPAGE является именно
parallel gzip {} ::: file1 file2
, чтобы добавить в Thunar Custom Action A, как команда, как один из здесь
for i in *.mp4; do avconv -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.aac"; done
, сначала добавьте это в исполняемый сценарий, вроде
#! /bin/sh -e
for i in *.mp4; do avconv -i "${i}" -map 0:1 -c:a copy "${i%.mp4}.m4a"; done
сделать его исполняемым и сохранять Это.
В пользовательских действиях Thunar добавьте новую запись с помощью команды Bash / Path / to / the / Script% f
и следующие условия:
Это требует отдельных пользовательских действий для каждого типа файла (потому что Он ограничен MP4 до M4A: внести изменения соответственно для FLV в M4A, WebM до OGG, AVI в MP3 и т. Д.) Но имеет то преимущество, что вывод сохраняет точное входное имя ( File.mp4 ] file.m4a ), в то время как с первой командой не работает ( file.mp4 file.mp4.m4a ).
Теперь я использую следующее:
bash -c 'ffmpeg -i "$0" -map 0:1 -c:a copy "${0%%.*}".m4a' %f
с настройкой *.flv;*.mp4
для условий внешнего вида.