我正在尝试重命名以splitfile[a-z]to形式命名的文件splitfile[1-26].csv,即我想重命名splitfilea为splitfile1.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)
如果您有该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.