Inside
- Tutoriales Linux
- Obtener Ayuda
La consola
- Midnight Commander - Administrar archivos
- Introducción al shell Bash
- Uso intermedio del shell Bash
- Nociones de uso de scripts
- Conexión a internet mediante scripts
- Encontrar archivos y texto
- Editores de Texto en Linux
- El editor de textos Vim
- Configurar una placa de video nVidia
- Administrar usuarios y permisos
- Introducción al árbol de directorios
- El directorio
/etc - El directorio
/usr - Alarmas y horarios con cron y at
- Crear particiones para Linux
- Ksysv e Init: servicios y arranque
- Grabar CDs desde consola
Instalar Distros
- Instalación: Preparándonos
- Instalar Mandriva Linux
- Instalación de programas
Entornos Gráficos
- Aprendiendo a usar un entorno gráfico
- Configuración de Blackbox
Aplicaciones
- Edición rápida de textos con Abiword
- Procesar textos con OpenOffice Writer
- OpenOffice Writer, tutorial intermedio
- Configurar OpenOffice
- Gnumeric: Planilla de cálculos veloz
- La Planilla de Cálculos OpenOffice Calc
- OpenOffice Calc, tutorial intermedio
- Presentaciones con OpenOffice Impress
- Diseño gráfico con The GIMP
- Escanear imágenes con Xsane y Gimp
¿Sufriste un ataque de generosidad y quieres regalarme algo? ¡Gracias! Fíjate en mi lista de deseos en Amazon.
Hai avuto un attacco di generosità e vuoi regalarmi qualcosa? Grazie! Controlla nella mia lista dei desideri su Amazon.
Búsqueda de archivos y texto
Uno de los pasos importantes en la configuración de un sistema es la búsqueda de los archivos a configurar. Aunque la interfaz de búsqueda humana (preguntarle a alguien) suele ser suficiente; en este tutorial veremos la manera de buscar archivos o cadenas de texto ("texto" siendo cualquier cosa: números, etc.) dentro de ellos. Usaremos 2 comandos: find y grep.
Nuevamente, al decir "archivos" hablamos de archivos, directorios, dispositivos. Todo en Unix es un archivo. Es cierto, no se pueden ver algunos de esos archivos como a todos los otros. Pero sí puede buscárselos.
Además, una vez que encontramos los archivos, podemos trabajar con ellos: modificarlos, guardar la lista, renombrar... Muchas cosas. Es la ventaja de usar sistemas con interfazs de usuario tan potentes. Pero pasemos a los comandos.
find
Find busca archivos en un directorio y sus subdirectorios. Si no se especifica uno en particular, busca desde el directorio actual. El uso de find es:
find archivo expresión
Por ejemplo, el comando que sigue busca y muestra los nombres de todos los archivos en el árbol de directorios /usr/src hasta los situados tres directorios debajo de /usr/src (si no comprende esto lea la ayuda de find, especialmente la opción -maxdepth), que terminen con ".rpm" y cuyos tamaños sean mayores a 100 kbytes. Las expresiones pueden incluir opciones generales, comparaciones (para distinguir entre archivos), y acciones que afectan al resultado de la búsqueda. Por ejemplo, en el comando abajo, -maxdepth es una opción, -name y -size son comparaciones; -print (que no es necesaria en este caso) es una acción:
find /usr/src -maxdepth 3 -name '*.rpm' -size +100k -print
El resultado del comando en nuestro caso es:
find /usr/src -maxdepth 3 -name '*.rpm' -size +100k -print /usr/src/RPM/SRPMS/centericq-4.9.7-1.src.rpm /usr/src/RPM/SRPMS/sylpheed-0.9.7-1.src.rpm
Por lo dicho, find es el comando a usar si está buscando archivos. Un uso simple de find: buscar un archivo determinado en un directorio y sus subdirectorios:
[rogelio@Edhellond rogelio]$ find -name rime* ./docs/rime10.txt [rogelio@Edhellond rogelio]$
Como ve, encontramos el archivo "rime.txt" dentro del subdirectorio docs. Por si le interesa, es el libro "La balada del viejo marinero", un poema de S.T.Coleridge. Puede encontrarlo en el sitio del proyecto Gutenberg, junto con cientos de otros clásicos, totalmente gratis. Seguiremos usando el archivo para demostrarle el uso de grep.
grep
Este comando busca texto que coincida con el patrón pedido. Sus posibles opciones son muchísimas, pero las esenciales puede que sean éstas que veremos:
-númeromuestra número líneas de texto antes y después de las coincidencias. Variantes:-A número(After, después) y-B número(Before, antes)-f archivose ejecuta sobre ese archivo-ino diferencia entre mayúsculas o minúsculas
Usemos grep entonces. Para empezar, un ejemplo fácil:
[rogelio@Edhellond rogelio]$ grep -n -e Mariner docs/rime10.txt 1:The Project Gutenberg Etext of The Rime of the Ancient Mariner 20:The Rime of the Ancient Mariner 29:**The Rime of the Ancient Mariner by Samuel Taylor Coleridge** 267:It is an ancient Mariner, 285:The Mariner hath his will. 290:The bright-eyed Mariner. 315:The bright-eyed Mariner. 364:"God save thee, ancient Mariner! 556:"I fear thee, ancient Mariner! 709:"I fear thee, ancient Mariner!" 829:When the Mariner's trance is abated. 1067:The Mariner, whose eye is bright, [rogelio@Edhellond rogelio]$
busca todas las líneas que contengan la cadena de texto "Mariner" en el archivo rime10.txt, y les agrega el número de línea. Si hubiésemos usado la opción -i la lista sería más larga. (encontraría, por ejemplo, "MARINER" y "mariner", e incluso "mariners". Si quisiéramos encontrar una palabra exacta, usaríamos la opción -w:
[rogelio@Edhellond rogelio]$ grep -w "Sun's" docs/rime10.txt -n 520:The Sun's rim dips; the stars rush out: [rogelio@Edhellond rogelio]$
Note que, si no hubiésemos usado las comillas dobles alrededor de "Sun's", el resultado no habría sido el buscado.
Ahondando un poco en el uso de grep, veamos algo más sobre expresiones regulares. Estas bestias son herramientas poderosísimas para usar grep (y también en edición avanzada de textos). Básicamente, una expresión regular es un patrón de búsqueda más o menos complejo. Por ejemplo: grep [1-9] usa una expresión regular, que en este caso busca cualquier número entre 1 y 9. Si agrego un '^' al principio de la expresión, se buscan todos los carácteres salvo esos. Hay abreviaturas como [:alnum:], que busca cualquier carácter alfanumérico. El comando sería grep [[:alnum:]], con dobles corchetes. Esto es una característica de las expresiones regulares, llamada clase. Una clase define un grupo de caracteres, en este caso los alfanuméricos.
[rogelio@Edhellond rogelio]$ grep [3-6] docs/rime10.txt -n 23:July, 1994 [Etext #151] 36:people, on about 250 million computers currently in existence: 37:then we will have given about 15.1 billion Etexts away when the 66:Files by the December 31, 2001. [10,000 x 100,000,000=Trillion] 82:Champaign, IL 61825 101:or cd etext93 [for new books] [now also in cd etext/etext93] 131:sending a request within 30 days of receiving it to the person 195:or addition to the etext, or [3] any Defect. 234:[3] Pay a trademark license fee to the Project of 20% of the 239: Benedictine College" within the 60 days following each 251:Internet (72600.2026@compuserve.com); TEL: (212-254-5093) 252:*END*THE SMALL PRINT! FOR PUBLIC DOMAIN ETEXTS*Ver.04.29.93*END* [rogelio@Edhellond rogelio]$
grep también puede usarse para buscar archivos, usando las opciones -l y -r:
grep -l 'main' *.c
busca todos los archivos que contengan la cadena main y terminen en .c;
grep -r 'hola' /home
busca recursivamente (bajando por los subdirectorios) desde /home, la cadena hola. Para estos usos conviene en realidad usar una combinación de grep y find.
Cuándo usar uno u otro
Normalmente, find se usa para encontrar nombres de archivo buscando en los directorios. grep es para buscar cadenas de texto en archivos o en la consola (puede hacerse un grep de lo que un comando devuelve como resultados. Por ejemplo, podría hacerse grep del resultado del comando ls. Ahora, como un directorio en Linux también es técnicamente un archivo, es posible hacer muchas cosas que en principio a uno no se le ocurren. El uso depende entonces de lo que quiera y sepa hacer. De todos modos, info comando o man comando le darán la ayuda que está buscando. Un último truco: info ``Finding Files'' (note el uso de acentos graves al principio de la cadena y apóstrofes al final).
Combinación de comandos
Supongamos que queremos archivar una búsqueda, o verla más cómodamente (el desplazamiento por la pantalla de terminal no es eterno). Tenemos dos opciones: una es correr
find archivo buscado > archivo
lo que guarda en el archivo el resultado de la búsqueda.
La segunda opción es combinar un comando antes de find:
less `find /usr/include -name '*.h' | xargs grep -l mode_t`
es una combinación algo extensa: hace que combinemos (con el comando xargs) los comandos grep (de búsqueda de cadenas en archivos) con find (de búsqueda de archivos); luego pasamos el resultado al comando less, que los presenta en pantalla. Si en lugar de éste usamos vi o algún otro editor de texto, podremos editar la búsqueda inmediatamente para darle el formato que deseemos.
Encontrará, leyendo a lo largo del manual de find, que se usan mucho los comandos find y xargs combinados, separados por un |. Esto fue explicado en el tutorial intermedio de Bash, en el tema de pipes. Por ahora, sepan que el símbolo | representa una tubería o pipe, y que ésta es una herramienta que toma el resultado de una acción y lo lleva a otro comando. Especialmente, veremos que find se usa en scripts de backup o de limpieza: buscar archivos a almacenar o borrar. Con info find encontrarán muchos ejemplos de esto.
Ya estamos listos. Es hora de ver el uso de un editor de textos profesional, o de ver cómo crear y usar scripts si prefiere.
Contactarme - Contattarmi
Ningún dato es necesario, salvo antispam y el texto del mensaje.
Nessun dato è necessario, aparte antispam e il testo del messaggio.