如何将 splitfile[az] 重命名为 splitfile[1-26]

use*_*949 7 rename command mv

我正在尝试重命名以splitfile[a-z]to形式命名的文件splitfile[1-26].csv,即我想重命名splitfileasplitfile1.csv等等。
我尝试了以下命令:

mv splitfile[a-z] splitfile[1-26].csv 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。请帮助我,同时我正在尝试使用 for 循环。

jim*_*mij 10

使用 newbash您可以使用以下形式的大括号扩展{a..z}

i=1; for f in file{a..z}; do mv "$f.csv" "${f%?}$((i++)).csv"; done
Run Code Online (Sandbox Code Playgroud)

  • @Costas - 默认情况下,globs 按语言环境排序。 (2认同)

roa*_*ima 7

如果您有该perl实用程序rename(有时称为prename),您可以使用它来重命名您的文件

rename -n 's/([a-z])$/ord($1)-96/e and $_ .= ".csv"' splitfile?
Run Code Online (Sandbox Code Playgroud)

这样做是取文件名匹配的最后一个字母splitfile?,将字符转换为其对应的 ASCII 序数(即 a=97, b=98, ...),减去 96 并用结果替换匹配的字母。对于成功应用此替换的所有文件名,附加字符串“.csv”。

上面的命令不会改变你的实际文件(这就是-n标志所做的),它只会打印它会做什么。运行一次,检查输出,如果正确,在没有-n.