Назад | Перейти на главную страницу

Рекурсивный список всех файлов с поврежденными именами

У меня есть Linux-сервер с некоторыми каталогами и структурой файлов. Видимо, как-то кто-то загрузил кучу имен файлов, которые были повреждены. Рассмотрим следующий пример:

└── parent
    ├── foo1.jpg
    ├── f+�o2.jpg
    └── foo+�.html

Существует около 1000 файлов и каталогов, поэтому ручное исправление - не лучший вариант. Есть ли способ найти все поврежденные имена с помощью одной команды терминала? Может быть, команда, которая фильтрует имена, содержащие символы не ascii или что-то в этом роде? Что было бы лучше всего? Спасибо!

Предполагая, что вы просто ищете имена файлов, содержащие символы, отличные от ASCII:

LC_ALL=C find /path/to/files | grep -P "[\x80-\xFF]"

Если это не работает для вас, я рекомендую вам скачать и установить detox. На странице руководства:

Утилита detox переименовывает файлы, чтобы с ними было легче работать. Он удаляет пробелы и другие подобные неприятности. Он также будет переводить или очищать символы Latin-1 (ISO 8859-1), закодированные в 8-битном ASCII, символы Unicode, закодированные в UTF-8, и экранированные символы CGI.