Как удалить акценты во всем дереве каталогов с файлами.

find /dir | awk '{print length, $0}' | sort -nr | sed 's/^[[:digit:]]* //' | while read dirfile; do outfile="$(echo "$(basename "$dirfile")" | unaccent UTF-8)"; mv "$dirfile" "$(dirname "$dirfile")/$outfile"; done


Эта команда выполняет следующие действия:

1. find /dir — находит все файлы в директории /dir и её поддиректориях.
2. awk '{print length, $0}' — добавляет к каждой строке длину строки.
3. sort -nr — сортирует строки в обратном порядке по длине.
4. sed 's/^[[:digit:]]* //' — удаляет число и пробел в начале каждой строки.
5. while read dirfile; do ... done — выполняет следующие действия для каждой строки.
6. outfile="$(echo "$(basename "$dirfile")" | unaccent UTF-8)" — удаляет акценты из имени файла с помощью утилиты unaccent и сохраняет результат в переменную outfile.
7. mv "$dirfile" "$(dirname "$dirfile")/$outfile" — перемещает файл, заменяя его имя на имя без акцентов.

Эта команда полезна, когда требуется удалить акценты из имен файлов в директории и всех её поддиректориях. Альтернативой может быть использование других утилит, например rename или mmv, которые также позволяют переименовывать файлы. Аргумент /dir в команде может быть заменен на путь к нужной директории.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *