Я тестируя Баш замены имени файла с расширением параметра, как показано здесь: How to change file extension in Linux shell script?Bash: с помощью {} заменить расширение имени файла
Однако, я не могу показаться, чтобы получить следующую работу, как я намерен:
данные следующие файлы:
tmp/01. Losing A Whole Year.flac
tmp/02. Narcolepsy.flac
Я бег find
для FLAC файлов в parallel
запуске echo
команды для вывода тестирования. Я пытаюсь заменить .flac
на .mp3
.
find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac%%.mp3}"'
Мой вывод:
tmp/01. Losing A Whole Year.flac {.flac%%.mp3}
tmp/02. Narcolepsy.flac {.flac%%.mp3}
Я планирую использовать это с ffmpeg
, если это делает разницу.
Edit: Ожидаемый результат:
tmp/01. Losing A Whole Year.flac tmp/01. Losing A Whole Year.mp3
tmp/02. Narcolepsy.flac tmp/02. Narcolepsy.mp3
Edit 2: Чтобы заменить расширение файла, я могу использовать:
find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac%%.mp3}"'
Однако, это дает следующие выходные данные
tmp/01. Losing A Whole Year.flac tmp/01.\ Losing\ A\ Whole\ Year.mp3
tmp/02. Narcolepsy.flac tmp/02.\ Narcolepsy.mp3
Возможно, теперь это вопрос ffmpeg, потому что ffm peg не сможет найти файл, если вместо символа пробега есть символ \
.
Все работает не так, как ожидалось, потому что вы используете параллельные замены, а не Bash. Подстановки Bash имеют префикс '$'. –