Іноді мені потрібно шукати файли з наголошеними символами (діакритичні взагалі), як правило, з locate / mlocate. Я хочу налаштувати (можливо, в /etc/updatedb.conf), тому він дозволить мені шукати ці спеціальні символи за допомогою певного відображення мови, наприклад:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Тому locate -i liberaciónтакож шукайте файли з рядковим liberacion і навіть liberaciòn .
Примітки та припущення
- А може бути , інші: àáâãäåæ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Це звичайна ситуація з такими романтичними мовами, як іспанська, французька та німецька.
- Я завжди використовую локаль 100% UTF-8.
- Я б швидше не повинен використовувати регулярні вирази.
- Патч може використовувати транслітерацію ASCII Unicode як Unidecode / cUnidecode . Більшість молокатів написані на С.
Пов'язані
- Подібне запитання, але використання
find - Мілослав Трмач (
mlocateрозробник) тут каже, що офіційний вихідний код знаходиться на pagure.io (і вилку на Github ). - Я подаю проблему на mlocate repo в Pagure.io, щоб додати цю функцію.
- Оновлення 2018-02 : це може бути виправлено за допомогою цього запиту на marcotrevisan . Додасть
-t/--transliterateпідтримку,iconvщоб відповідати акцентованим. - Оновлення 2018-03 :
mlocateпідтримка--transliterateтепер включена в Ubuntu 18.04 LTS Bionic Beaver ( v2 та v3.1 ).
- Оновлення 2018-02 : це може бути виправлено за допомогою цього запиту на marcotrevisan . Додасть
grep -fабоfgrepуникати інтерпретації"$CH"як спеціального символу, наприкладgrep ^, відповідатиме будь-якому рядку, але відповідаєgrep -f ^лише тим, що містять цей символ^. Також може бути простіше використовувати класи символів для створення регулярного виразу, тобтоREG="[$CHARS]", ймовірно, простіше, ніж вашаsedкоманда. Хоча слідкуйте за особливими персонажами! Інакше хороший підхід. +1