在一个文件夹中,我有多个文件(大约60K),这样的随机名称,我想按字母顺序重命名所有文件。
jlg6aej.gif
owu46tljff.JPG
28LKG.JPG
uoeoo87967.jpg
....
我知道如何以数字方式重命名它们,例如
ls | cat -n | while read n f; do mv "f" "$n.txt"; done
现在我想按字母顺序重命名,而不是数字,所以任何字母顺序都可以,但请只使用字母,文件名中没有数字,例如:
aaaa.txt
aaab.txt
aaac.txt
aaad.txt
....
谢谢!
答案 0 :(得分:1)
我已经快速完成了一个Perl脚本来实现这一点,因为列表支持比bash更容易。
list
仍需要改进,但目前该版本已在我的目录中重命名了所有文件(以及perl脚本...... :)):
_collections.deque
答案 1 :(得分:1)
仅使用bash的一种方法
a=({a..d}{a..z}{a..z}{a..z})
x=0
for i in *;do echo mv "${i}" "${a[$((x++))]}.${i##*.}";done
如果您对输出感到满意,请删除回声。
或使用perl
perl -e '$prefix="aaaa";map{rename "$_",$prefix++.".$1" if /.*\.(.*)/} <*>'