A veces necesito buscar archivos con caracteres acentuados (diacríticos en general), generalmente con localizar / ubicar. Deseo configurar (tal vez en /etc/updatedb.conf
) para que me permita buscar estos caracteres especiales utilizando una asignación de idioma determinada, por ejemplo:
a == âàáäÂÀÂÄ
e == êèéëÊÈÉË
i == îïíÎÏ
o == ôöóÔÖ
u == ûùüÛÜÙ
c == çÇ
n == ñ
Por lo tanto, locate -i liberación
también busque archivos con liberacion de cadenas e incluso liberaciòn .
Notas y supuestos
- Y tal vez otros: ÂÃÄÀÁÅÆ ÇÈÉÊËÌÍÎÏ ÐÑÒÓÔÕÖØÙÚÛÜÝÞ ßàáâãäåæç èéêëìíîïðñòóôõö øùúûüýþÿ .
- Esta es una situación común en lenguas romances como español, francés y alemán.
- Siempre estoy usando un entorno local 100% UTF-8.
- Preferiría no tener que usar expresiones regulares.
- Un parche puede usar transcripciones ASCII de Unicode como lo hace Unidecode / cUnidecode . La mayor parte de mlocate está escrito en C.
Relacionado
- Pregunta similar pero usando
find
- Miloslav Trmač (
mlocate
desarrollador) dice aquí que el código fuente oficial está en pagure.io (y una bifurcación en Github ). - Cómo presento una cuestión sobre la cesión temporal mlocate en Pagure.io añadir esta función.
- Actualización 2018-02 : Esto se puede solucionar con esta solicitud de extracción de marcotrevisan . Agregará un
-t
/--transliterate
soporte usandoiconv
para hacer coincidir acentuado - Actualización 2018-03 : ahora se incluye
mlocate
soporte para--transliterate
Ubuntu 18.04 LTS Bionic Beaver ( v2 y v3.1 ).
- Actualización 2018-02 : Esto se puede solucionar con esta solicitud de extracción de marcotrevisan . Agregará un
fuente
grep -f
ofgrep
evitar la interpretación de"$CH"
como un carácter especial, por ejemplogrep ^
, coincidiría con cualquier línea perogrep -f ^
solo coincidiría con las que contienen el carácter^
. También puede ser más fácil usar clases de caracteres para diseñar la expresión regular,REG="[$CHARS]"
es decir, probablemente sea más fácil que sused
comando. ¡Pero ten cuidado con los personajes especiales! De lo contrario, un buen enfoque. +1Ahora con mlocate 0.26 tenemos la
-t --transliterate
opción (ver la página de manual ) en Ubuntu 18.04+ (sin la necesidad de soluciones extrañas):Crear algunos archivos de prueba:
Actualización y búsqueda:
¡Así que ahora
locate -t liberación
también busca archivos con cadenaliberacion
e inclusoliberaciòn
!Finalmente, creando un alias en mi .bashrc :-)
fuente