martes, 19 de septiembre de 2017

Manipulación de patrones Linux





El presente artículo se da porque en el tiempo que llevo trabajando en TI he dado con un par de entrevistas de trabajo que han preguntado exactamente esto… Como hago yo para encontrar o filtrar entre tanto fichero o carpeta, los elementos que pertenezcan a un determinado día o que comiencen con determinado número o determinada letra dentro de la terminal Linux?

Esta solo pretende ser una guía práctica que busca puntualmente este propósito, ¿Cómo realizar estos filtrados entre bastantes y determinados archivos?

En primer lugar la manipulación se puede dar con operaciones como copiar (cp), mover (mv), eliminar (rm), listar archivos (ls), etc… Para este caso práctico me limitare a hacer estos ejercicios listando (ls). 


Entonces y en primer lugar, tenemos el listado para hacer la manipulación de patrones, como ejemplo he escogido la carpeta de configuraciones “etc”, esto porque tiene bastantes elementos con los cuales se podrá realizar el ejercicio (sobra decir que este proceso se puede realizar desde cualquier punto del sistema de ficheros).




Ahora las opciones que tenemos para hacer los filtrados.



EJEMPLOS PRACTICOS


1.       Punto (*.) y extensión de formato (*.txt, *.biz, *.conf, *.xls, etc, etc, etc…). Entre el listado dispuesto en la imagen, se desea filtrar todo lo que tenga extensión “.conf”. El carácter (*) significa que nos traerá cualquier cadena que pueda ser (esto incluso se aplica en Windows cuando se busca un archivo), lo que quiere decir que nos traerá cualquier cosa que tenga esa extensión que deseamos filtrar. Ejemplo práctico:



Si deseáramos eliminar todos estos archivos discriminando únicamente la extensión, su forma seria (rm –rf *.conf), obviamente es un ejemplo, estos archivos son necesarios para el funcionamiento del sistema.
1.       Si dentro del gran listado inicial, queremos traer los archivos que tengan dentro de su nombre las letras “gal”, como “legal”, tendríamos que poner las letras de búsquedas entre asteriscos, como en el siguiente ejemplo:



Dentro de todos los archivos en la carpeta “/etc” nos trajo únicamente la palabra “legal”.
¿Para qué sirve esto?
Imagínese en una empresa que genera automáticamente archivos con registros diarios en uno de sus servidores UNIX en su centro de cómputo. Y le piden a usted que encuentre todos los archivos que se generaron el 20 de febrero del 2013 (ejemplo) y se encuentra usted perdido entre miles o hasta millones de ficheros. Aplicando este filtro podría ganar una aproximación, esto dependerá obviamente en la forma que se genera el nombre de dichos archivos en el sistema.

1.       Ahora se requieren encontrar archivos con cadenas de texto inconclusas, en las que por ejemplo se requiera filtrar cadenas de caracteres con uno de estos caracteres faltantes al principio, medio, final o cualquier posición. Este filtro se logra con el comodín “?”, el cual podría remplazar cualquier carácter dentro de la cadena. La mejor forma de explicarlo es con un sencillo ejemplo:


En este ejemplo se hace prueba con un comodín, luego con dos, generando los mismos resultados. De momento no he tenido un caso práctico de uso para este tipo de filtrado.


Ahora tendremos que realizar un filtrado por patrón. Es decir, que todos los archivos cuya cadena de caracteres comience con “up” deberán ser filtrados y mostrados con el procedimiento. Esto se logra con el paréntesis cuadrado y asterisco “[]*”. Ejemplo: Dada una carpeta de repositorios de imágenes de equipos de cómputo, se deberá buscar solo aquellas imágenes que sean para los equipos de la marca HP. 


Filtrando:



Si por ejemplo queremos ver las imágenes para los equipos Compaq:



Y si por ejemplo queremos filtrar todas las imágenes de equipos, menos que de las imágenes que sean para los equipos HP:



En este caso, la sintaxis del filtro indica que, mostrar filtro de todas las imágenes, menos de las imágenes que comiencen con HP, por medio del símbolo “!”, el cual denota un diferenciador al resto de los demás archivos o carpetas.

Estos procesos, información y conocimiento no son nuevos y es la forma en la que se ha venido trabajando siempre, en especial en lugares que manejan grandes cantidades datos sobre servidores o sistemas operativos que tengan como base UNIX, aunque perfectamente se puede practicar sobre Linux. Esto como tal fue una práctica, se le recomienda al lector indagar más en el tema y sobre todo practicar.
Referencias:
Lopez Sanches, M.J & Belle, S., & Auli, F. (2008). Sistema operativo GNU/Linux básico, ES: Universitat Oberta de Catalunya, Recuperado de http://hdl.handle.net/10609/189