我正在使用参数展开测试bash文件名替换,如下所示:How to change file extension in Linux shell script?
但是,我似乎无法按照我的意愿来完成以下工作:
给出以下文件:
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
一起使用。
编辑: 预期产出:
tmp/01. Losing A Whole Year.flac tmp/01. Losing A Whole Year.mp3
tmp/02. Narcolepsy.flac tmp/02. Narcolepsy.mp3
编辑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问题,因为如果\
字符代替空格字符,ffmpeg将无法找到该文件。
答案 0 :(得分:1)
我想我明白了:
find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.}.mp3"'
将产生预期的结果。
虽然,我不知道为什么这不起作用:
find tmp -type f -name '*.flac' | time parallel -j+0 --eta 'echo "{} {.flac}.mp3"'
编辑:
虽然上述内容似乎有效,但会插入\
个字符来替换空格,这会导致ffmpeg找不到所需的文件。