如何使用前 10 个字符重命名多个文件?

sur*_*ana 8 command-line batch-rename

我在通过用旧名称的前 10 个字符替换名称来重命名多个文件时遇到问题。我试图在互联网上找到解决方案,但没有找到答案。

例子:

原始文件名:

1208605001abAcd.jpg 
1201230111FbcAdee.jpg 
11512345714x611aaa.jpg 
Run Code Online (Sandbox Code Playgroud)

我想要达到的目标:

1208605001.jpg 
1201230111.jpg 
1151234571.jpg
Run Code Online (Sandbox Code Playgroud)

mur*_*uru 16

你可以试试:

rename -n 's/(.{10}).*(\.jpg)$/$1$2/' *.jpg
Run Code Online (Sandbox Code Playgroud)

例子:

$ rename -n 's/(.{10}).*(\.jpg)$/$1$2/' *.jpg
11512345714x611aaa.jpg -> 1151234571.jpg
1201230111FbcAdee.jpg -> 1201230111.jpg
1208605001abAcd.jpg -> 1208605001.jpg
Run Code Online (Sandbox Code Playgroud)

-n选项仅模拟命令,以便您可以验证更改。在没有它的情况下运行以实际进行更改。

正则表达式(.{10}).*(\.jpg)包括:

  • .{10}- 任何 10 个字符,在一个组中(…),然后是
  • .* - 任意数量的任意字符后跟
  • \.jpg$-$文件名末尾 ( )的扩展名,在第二组中

替换$1$2只是第一组,然后是第二组。


Ant*_*nio 5

您只能使用 bash:

for FILE in *.jpg ; do mv "${FILE}" "${FILE:0:10}.jpg" ; done
Run Code Online (Sandbox Code Playgroud)

通过一些工作,您可以获得文件扩展名并自动添加到新名称。

  • 使用通配符 (`*`) 而不是 `ls`(无论如何你都不需要 `-1`),并引用变量。(`“${FILE:0:10}.jpg”`)。 (4认同)