Переименование нескольких файлов на основе даты изменения
Я смотрел в Интернете на нескольких сайтах, но я не могу найти решение, и страница справки не ясно (я начинающий с CLI). Это моя проблема: у меня есть около 200 файлов в каталоге, эти файлы не имеют расширений и имеют неправильные имена.
Для простоты представьте, что все файлы выглядят примерно так:
Delta --- 2.0K --- 01/01/1993
Gamma --- 2.1k --- 01/01/1991
Alfa --- 2.2k --- 04/15/1992
Bravo --- 2.3k --- 04/10/1992
То, что я пытаюсь сделать, это:
переименуйте все файлы таким образом 1, 2, 3,.., но так, чтобы имя было установлено в соответствии с целой датой (не только год или месяц), так что вывод должен выглядеть примерно так
1 --- 2.1k --- 01/01/1991
2 --- 2.3k --- 04/10/1992
3 --- 2.2k --- 04/15/1992
4 --- 2.0k --- 01/01/1993
Также я хочу добавить расширение, например.TXT, чтобы конечный результат мог быть:
1.txt --- 2.1k --- 01/01/1991
2.txt --- 2.3k --- 04/10/1992
3.txt --- 2.2k --- 04/15/1992
4.txt --- 2.0k --- 01/01/1993
2 ответа
Сделав что-то подобное раньше, я могу заверить вас, что легко сделать опечатку, которая даст вам еще большую проблему, которая у вас уже есть. Используйте эту информацию на свой страх и риск.
При подсказке bash;
i=0 ; for f in `ls -rt` ; do i=$(expr $i + 1); mv $f $i.txt; done
iдействует как счетчикls -rtперечисляет файлы в обратном порядке по времени изменения - если вы скопировали, переместили или иным образом изменили файлы, это может не дать ожидаемый порядок файлов. Проверьте это внимательно, запустивls -rtв качестве отдельной команды и проверьте это - дважды.for f inls -rt; doповторяет список файлов с 'f', берущей каждое имя файлаi=$(expr $i + 1)увеличивает счетчикmv $f $i.txtпереименовывает файл с помощью счетчика и добавляет расширение.txtdoneзамыкает цикл- обратите внимание, что команды в цикле разделяются точкой с запятой, поэтому, если вы добавите еще одну команду, введите точку с запятой
Через питона,
script.py
import os
import shutil
directory = sys.argv[1]
count = '0'
for item in os.listdir(directory):
count = str(int(count)+1)
newname = re.sub(r'.*', count+'.txt', item)
shutil.move(directory+"/"+item, directory+"/"+newname)
Как запустить?
python3 script.py /path/to/the/directory