Отказ от ответственности
Достоверность этого ответа основана на комментарии, в котором автор указал, что они не привязаны к языку C++ (возможно, стоит отредактировать вопрос, тег C++ и ОС). Это решение может работать для систем UNIX, поддерживающих bash, то есть для большинства дистрибутивов Linux и всех выпусков macOS от Apple до macOS Catalina (поправьте меня, если я ошибаюсь).
Командная строка Баш
Использование следующей команды bash должно переименовывать все файлы в папке с возрастающими номерами, то есть:
- toto.csv -> 1.csv
- titi.csv -> 2.csv и т. д.
Предполагается, что порядок не важен.
a=1; for i in *; do mv -n "$i" "$a.csv" ; let "a +=1"; done
Чтобы проверить это, вы можете подготовить тестовую папку, открыв терминал и набрав:
mkdir test
cd test
touch toto.csv titi.csv tata.csv
ls
Вывод:
tata.csv titi.csv toto.csv
Затем вы можете запустить следующую команду:
a=1; for i in *; do mv -n "$i" "$a.csv" ; let "a +=1"; done
ls
Вывод:
1.csv 2.csv 3.csv
Объяснение:
a=1
объявить переменную
for i in *;
начинаем перебирать все файлы в папке
do mv
переместит (переименует) файл списка (то есть переменную $i
) на новое имя с именем a.csv
- и мы увеличиваем счетчик
a
и закрываем цикл.
- опция
-n
гарантирует, что ни один файл не будет перезаписан командой mv
Я предположил, что не было определенного критерия для переименования файлов. Если в переименовании есть определенная структура (шаблон), команда bash, вероятно, может ее учесть, но тогда вопрос должен содержать более подробную информацию об этих требованиях :)
person
Arnaud Becheler
schedule
09.12.2020