5 de mayo de 2011

Caracteres Comodín y Expresiones Regulares para Linux



Una característica importante de la mayoría de los intérpretes de comandos en Unix es la capacidad para referirse a más de un archivo usando expresiones regulares.

Linux usa los comodín para la sustitución de caracteres. Estos caracteres comodín nos puede ser de mucha utilidad cuando lazamos el comado de ls para buscar un o varios de archivos o directorios cuyo nombre contiene una determinada secuencia de caracteres.

El comodín “*”: sustutuye una cadena de caracteres en el nombre del archivo o directorio. Cuando se usa el carácter “*” para referirse al nombre de un archivon o directorio, el intérprete de comandos lo sustituye por todas las combinaciones posibles de los archivos y directorios dentro del directorio que estamos refiriendo.

Por ejemplo supongamos que en el directorio del usuario aceitunero tenemos varios directorios como puede ser aceitunero, antonio y invitado. Si observamos todos estos directorios termina en “o” y si lanzamos un ls nos mostrará todos los archivos y directorios que tenemos:

aceitunero@Pc15:~$ ls

aceitunero Documentos Imágenes Plantillas Videos
antonio Escritorio invitado Público
Descargas examples.desktop Música salida.txt

Para listar todos los archivos que termina con la letra “o”, usaremos esta línea de comandos, el resultado sería:

aceitunero@Pc15:~$ ls *o

aceitunero:
antonio:
Escritorio:
Imagenes_ISO introduccion_linux_2010
invitado:
Público:

Como podemos ver, el comodín “*” ha sido sustituido todos los caracteres anteriores al caracater que se ha introducido y ha realizado las combinaciones posibles para mostrar los archivos y directorios que terminen en “o” del directorio donde nos encontramos.

Otros ejemplos sería:

aceitunero@Pc15:~$ ls a*

aceitunero:
total 0
antonio:
total 0

El comodín “?”: Este carácter comodín sólo sustituye un carácter, por ejemplo:

aceitunero@Pc15:~$ ls -ld antoni?

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

aceitunero@Pc15:~$ ls -ld ?*o

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunero
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio
drwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritorio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitado
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Público

Los caracteres comodín nos permiten referirse a más de un archivo a la vez. Por ejemplo, también podemos usarlo con los comandos cp y mv para copiar o mover varios archivos de una vez. Por ejemplo:

aceitunero@Pc15:~$ mkdir archivos_host

aceitunero@Pc15:~$ cp /etc/host* /home/aceitunero/archivos_host/

aceitunero@Pc15:~$ cd archivos_host/

aceitunero@Pc15:~/archivos_host$ ls

host.conf hostname hosts hosts.allow hosts.deny

Lo que estamos haciendo es copiar todos los archivos del directorio /etc que comiencen con “host” al directorio /home/aceitunero/archivos_host/.

El comodín [ ]: Los corchete se utilizan para pasar un rango de caracateres, que tomará para realizar la busqueda, por ejemplo:

aceitunero@Pc15:~$ ls -ld [a-c]*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunero
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_host
-rw-r--r-- 1 aceitunero aceitunero 79 2011-05-04 19:40 basura.txt

El listado que nos muestra son los archivos o directorios que comienza en “a” hasta la “c” incluidad y como hemos pasado también el carácter comodín “*” tomará cualquier carácter. Otros ejemplos:

aceitunero@Pc15:~$ ls -ld [a-c]*o

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunero
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

aceitunero@Pc15:~$ ls -ld *[a-c]

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

El comodín !: La exclamación se utilizan para denegar el rango de caracteres que se pasa, es decir, tomara todos los caractes menos los que se pasen para realizar la busqueda, por ejemplo:

aceitunero@Pc15:~$ ls -ld [!a-c]*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Descargas
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Documentos
drwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritorio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Imágenes
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitado
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Plantillas
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Público
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Videos

El listado que nos muestra son los archivos o directorios que NO comienza por “a” hasta la “c” incluidad y como hemos pasado también el carácter comodín “*” tomará cualquier carácter. Otros ejemplos:

aceitunero@Pc15:~$ ls -ld [!a-c]*o

drwxr-xr-x 5 aceitunero aceitunero 4096 2011-05-05 16:17 Escritorio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 invitado
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Público


aceitunero@Pc15:~$ ls -ld *[!o-s]

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_host
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

El comodín { }: Las llaves se utilizan para pasar un numero de caracteres, que se usarán para realizar la busqueda de los archivos y directorios que contenga eso caracteres, por ejemplo:

aceitunero@Pc15:~$ ls -ld {a,b}*

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunero
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-05 16:35 archivos_host
-rw-r--r-- 1 aceitunero aceitunero 79 2011-05-04 19:40 basura.txt

El listado que nos muestra son los archivos o directorios que comienza en “a” y los que comienzan porb” y con el carácter comodín “*” tomará cualquier otro carácter. Otros ejemplos:

aceitunero@Pc15:~$ ls -ld {a,c}*o

ls: no se puede acceder a c*o: No existe el fichero o el directorio
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 aceitunero
drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 19:30 antonio

aceitunero@Pc15:~$ ls -ld *{a,c}

drwxr-xr-x 2 aceitunero aceitunero 4096 2011-05-04 17:39 Música

Como podéis observa estas combinaciones de los comodines nos puede ayudar a la hora de copiar, mover, listar, etc. un conjunto de archivos o directorios de una forma sencilla.

Espero que os sea de ayuda a todos un saludo:

Antonio

7 comentarios:

Anónimo dijo...

Gracias!
Me fue útil para resolver una duda rápidamente.

Jose Luis Calvo Benítez dijo...

Muy bueno esta entrada del blog. Aunque te daré un consejo. Debes cuidad más la ortografía, ya que da muy mala sensación un documento con tantas faltas ortográficas.
Si combinas (con b y m antes de b, no con n y v) un buen manual y una buena ortografía llegarás más lejos.

Aceitunero dijo...

Me alegro mucho que te resultara de ayuda este artículo. Gracias y un saludo.

Aceitunero dijo...

Gracias, revisaré la ortografía antes de publicar, ya sabes las prisas no son buenas consejeras.

Sir Chaox dijo...

Buenas Antonio!

Gracias por la info. A pesar que el post tiene ya unos 6 años, ¡es tremendamente útil!
Me estaba volviendo loco intentando mover archivos que comiencen con determinada letra y luego *.

Un saludo, gracias nuevamente!

Sir Chaox | IT Repair You

Anónimo dijo...

Absolutamente cierto, muy bien explicado, los profes podrían darse el trabajo de de explicar asi de simple y ordenado!

Aceitunero dijo...

Gracias a vosotros por los ánimos ... aunque si bien es cierto que tengo mi blog un poco abandonado... :-(

Intentaré ponerle remedio y un millón de gracias de nuevo.

Publicar un comentario

No olvides dejar tu comentario.