Я создавал простые функции bash для этого с помощью find -exec
парсинга ls или использования подстановки bash и т. д. каждый раз, когда у меня возникала большая проблема и мне приходилось прибегать к новому методу: один раз это был слишком длинный список аргументов, другой раз файлы, которые уже имели имя, например, 2
были перезаписаны при переименовании другого файла в 2
.
Один раз это была проблема с unicode, один раз с пробелом в имени файла, один раз с *
или &
в имени файла и т. д. Поэтому я подумал, что приду сюда и спрошу вас, люди, о самом эффективном и надежном универсальном способе переименовать все файлы в каталоге, чтобы они имели последовательные имена.не важно что!Неважно, насколько длинные имена файлов, каково их изначальное имя или какое у них расширение, и неважно, содержат ли они символы, не входящие в набор ASCII.
Итак, мои требования:
- Что он работает с длинными именами файлов.
- Что он работает с символами Юникода.
- Это работает, если в файлах есть пробелы или специальные символы.
- Что он не перезаписывает один файл другим.
- Чтобы это было как можно быстрее:D
решение1
Если ваш Ubuntu не является сервером, не относитесь к нему как к таковому. pyRenamer из репозиториев Ubuntu по умолчанию имеет все функции, которые вы ищете, включая поддержку регулярных выражений, и поскольку это программа с графическим интерфейсом, вам не нужно ломать голову, пытаясь понять, как ее использовать. Если у вас возникли проблемы с написанием регулярного выражения, вы можете получить объяснение того, что делает ваше регулярное выражение, наРегЭкср. Не позволяйте себе предвзято относиться к программам с графическим интерфейсом, созданным для подобных случаев использования.
pyRenamer доступен в репозиториях Ubuntu по умолчанию в Ubuntu 16.04 и более ранних версиях. В Ubuntu 18.04 и более поздних версиях pyRenamer был заменен наGPRename.