У меня около 18k файлов с такими именами:
0001_6548
0002_7674
...
14767_4536
Мне нужно добавить начальный ноль к именам файлов, которые содержат только 4 цифры в первой части, чтобы они, естественно, отсортировали правильным образом.
sudo apt-get install krename
Это - базирующееся приложение хорошего gui для переименования пакетного файла. Попробуйте его
, Как Обработать в пакетном режиме, Переименовывают Файлы в Ubuntu с KRename
, который объясняет Эта статья, как использовать krename (я не автор)
Решение 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*
Легкое задание для rename
(prename
), из того каталога:
rename -n 's/^\d{4}_\d{4}$/0$&/' [[:digit:]]*
Отбрасывание -n
для фактического действия.
^\d{4}_\d{4}$
имена файлов соответствий с 4 цифрами, сопровождаемыми a _
, с другой стороны 4 цифры
Те файлы переименованы с a 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