0

我正在测试带有参数扩展的 bash 文件名替换,如下所示:如何更改 Linux shell 脚本中的文件扩展名?

但是,我似乎无法按照我的意愿进行以下工作:

给定以下文件:

tmp/01. Losing A Whole Year.flac
tmp/02. Narcolepsy.flac

我运行findflac 文件以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 将无法找到文件。

4

1 回答 1

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 找不到所需的文件。

于 2015-11-15T16:55:22.663 回答