Автоматически объединять объединение символов в базовые символы в именах файлов?

329
Frederick Zhang

Я использую файловую систему ext4 под Linux.

Некоторые символы UTF-8 объединяют символы, которые используются для изменения других символов, и иногда они могут быть фактически объединены в базовый символ.

Например,

$ ls -l total 0 -rw-r--r-- 1 user user 0 Mar 28 02:58 ド -rw-r--r-- 1 user user 0 Mar 28 02:58 ド 

... эти два имени файла выглядят совершенно одинаково (и имеют одинаковое значение), но на самом деле второе содержит объединяющий символ U + 3099 .

$ find . -maxdepth 1 -type f -print0 | sort -z | xargs -r0 -I@ bash -c 'echo -n -e "@\t" && echo -n "@" | tr -d './' | xxd -pu' ./ド e38389 ./ド e38388e38299 

Это часто делает его чрезвычайно запутанным, поскольку у вас может быть несколько файлов с именами, которые выглядят полностью идентичными.

Так:

  1. Можно ли преобразовать последний в первый? (так что я могу сделать массовое переименование)
  2. Можно ли сделать такое автоматическое переименование на уровне файловой системы?

Благодарю.

0
@ Grawity Именно то, что мне нужно! Спасибо! Frederick Zhang 6 лет назад 0

0 ответов на вопрос

Похожие вопросы