При переименовывании файлов удаляются файлы
Нужно переименовать файлы от 1 и до N. Для этого я написал небольшой скрипт в bash.
Скрипт:
i=0;
for name in `ls *.wav`;
do i=$[i+1];
mv $name `printf "%02d" $i`.wav;
done
После выполнения скрипта было замечено несоответствие кол-ва файлов в исходной папке с кол-вом переименованных файлов. В попытке решить эту проблему, реализовал этот же скрипт на Python (не нашел, скорее всего удалил). К сожалению, ситуация не изменилась. Файлы, изначально имеющее в своем имени цифры, удалялись.
Долго над решением не думал, поэтому просто взял и добавил в скрипт дополнительный цикл for для того, чтобы сбросить имена, которые содержат цифры, через добавление дополнительного символа в имя файла.
Скрипт на Python:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# File renamer
# Move the RENAME.py file to the directory with the files you want to rename.
# To run, enter in the terminal: python3 RENAME.py
import os
# constants
FILE_TYPE = '.wav'
LETTER = 'A'
SLASH = '/'
CURRENT_DIRECTORY = os.getcwd()
# index\counter
i = 0
j = 0
initial_list = os.listdir()
initial_list.remove("RENAME.py")
temporary_filenames = []
print("\n\tСurrent directory:\t", CURRENT_DIRECTORY, "\n")
# Rename current files with an extra character added to prevent files from being deleted.
for file in initial_list:
temporary_filenames.append(file)
file_location = CURRENT_DIRECTORY + SLASH + temporary_filenames[i]
temporary_filename = LETTER + str(i) + FILE_TYPE
i += 1
os.rename(file_location,temporary_filename)
updated_list = os.listdir()
updated_list.remove("RENAME.py")
persistent_filename = []
for file in updated_list:
persistent_filename.append(file)
file_location = CURRENT_DIRECTORY + SLASH + persistent_filename[j]
j += 1
new_filename = CURRENT_DIRECTORY + SLASH + str(j) + FILE_TYPE
print("\tFile:", file_location, "\t\trenamed to:", new_filename)
os.rename(file_location,new_filename)
print("\n\tFiles renamed:" + str(j) + "\n")
Проблема была решена. Но мне кажется, подобное решения является костыльным.
Есть ли возможность реализовать подобное без костылей? Заранее спасибо.