Я считал сеть на нескольких сайтах, но я, может казаться, не нахожу решение, и страница справочника не является четкой (я - новичок с 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
Сделав что-то вроде этого прежде, я могу уверить Вас, что легко сделать опечатку, которая даст Вам еще большую проблему, которую Вы уже имеете. Используйте эту информацию на Ваш собственный риск.
При подсказке удара;
i=0 ; for f in `ls -rt` ; do i=$(expr $i + 1); mv $f $i.txt; done
i
действия как счетчикls -rt
файлы списков в обратном порядке ко времени изменения - если Вы скопировали, переместили или иначе изменили файлы, это не может дать Вам файл, приказав, чтобы Вы ожидали. Проверьте его тщательно путем выполнения ls -rt
как отдельная команда и проверка это - дважды.for f in
ls-rt; do
выполняет итерации списка файлов с 'f', берущим каждое имя файлаi=$(expr $i + 1)
увеличивает счетчикmv $f $i.txt
переименовывает файл с помощью счетчика, и добавляя .txt расширениеdone
замыкает кругЧерез Python,
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