在Ubuntu中重命名多个文件的字母顺序

时间:2017-06-11 19:39:46

标签: bash shell unix rename

在一个文件夹中,我有多个文件(大约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  
....

谢谢!

2 个答案:

答案 0 :(得分:1)

  • 首先,您需要提取所有扩展名。
  • 然后,在foreach扩展名中,您必须重命名所有文件,并增加名称。

我已经快速完成了一个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 /.*\.(.*)/} <*>'