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