如何重命名扩展名略有不同的多个文件?

noo*_*son 2 bash filenames rename

我有多个文件,它们都具有类似的命名模式,例如:

{filename}.jpeg{random number}
Run Code Online (Sandbox Code Playgroud)

我想重命名这些文件,以便它们的扩展名只是 .jpeg。我怎样才能做到这一点?

Jas*_*sen 6

如果你有 Larry Wall 的 perl 重命名

rename 's/[.]jpeg[0-9]*/.jpeg/' *.jpeg[0-9]*
Run Code Online (Sandbox Code Playgroud)

如果您只有 Util-Linux 重命名不起作用。

您可以在 bash 中使用 for 循环

for n in *.jpeg[0-9]*
do mv -i "$n" "${n%%.jpeg[0-9]*}.jpeg"
done
Run Code Online (Sandbox Code Playgroud)

${var%%pattern}是一个标准参数扩展,扩展到 的值var,其中(最长的)尾随部分匹配pattern被删除。所以,如果nfoo.jpeg123${n%%.jpeg[0-9*}foo。(foo.jpeg1abc也会导致foo.)