根据文件名长度在文件名中插入一个字符

根据文件名长度在文件名中插入一个字符

我有大约 18k 个文件,其命名方式如下:

0001_6548
0002_7674
...
14767_4536

我需要在第一部分仅包含 4 位数字的文件名中添加前导零,以便它们自然地以正确的方式排序。

答案1

rename对于( prename) 来说,从该目录可以轻松完成以下工作:

rename -n 's/^\d{4}_\d{4}$/0$&/' [[:digit:]]*

放弃-n实际行动。

  • ^\d{4}_\d{4}$匹配文件名为 4 位数字,后跟_,然后再是 4 位数字

  • 这些文件被重命名为0前缀,0$&

例子:

% ls [[:digit:]]*
0001_6548  0002_7674  14767_4536

% rename -n 's/^\d{4}_\d{4}$/0$&/' [[:digit:]]*
0001_6548 renamed as 00001_6548
0002_7674 renamed as 00002_7674

% rename 's/^\d{4}_\d{4}$/0$&/' [[:digit:]]* 

% ls [[:digit:]]*                              
00001_6548  00002_7674  14767_4536

答案2

sudo apt-get install krename

这是一款出色的基于 GUI 的批量文件重命名应用程序。试试吧

如何使用 KRename 在 Ubuntu 中批量重命名文件

这篇文章解释了如何使用 krename(我不是作者)

答案3

Python解决方案:

#!/usr/bin/env python
from os import listdir,path,rename
from sys import argv
import re
for i in listdir("."):
    if i == argv[0] or not path.isfile(i):
        continue
    if re.match('\d{4}_\d{4}',i):
        rename(i,'0'+i)

测试:

$ ls
0001_6548  0002_7674  14767_4536  append_zero.py*
$ ./append_zero.py                                    
$ ls
00001_6548  00002_7674  14767_4536  append_zero.py*

相关内容