我正在尝试重命名以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
.