El comando por excelencia para buscar archivos en Linux es find. En este articulo se pretende dar una introducción a este comando. Para los ejemplos trabajare sobre una carpeta llamada "test" con la siguiente estructura: mad@mad-laptop:~/test$ ls El ejemplo mas básico es buscar por nombre de fichero, en mi caso buscare un fichero llamado "punteros.c": find -name "punteros.c" El parametro -name tiene en cuenta si la palabra tiene letras en minúscula o mayúscula, si se quiere ignorar eso, hay que usar el parametro -iname: mad@mad-laptop:~/test$ find -iname "pilas_colas.cpp" Para limitar la búsqueda a un directorio, se hace de la siguiente manera: mad@mad-laptop:~/test$ pwd En mi caso, he limitado la búsqueda a la carpeta /home/mad/test. Podemos indicarle hasta el nivel de profundidad al realizar la busqueda: mad@mad-laptop:~/test$ sudo find / -maxdepth 3 -name backup.sh En el primero ejemplo estamos partiendo desde /(root) y le indicamos que busque el fichero "backup.sh" en los tres primeros niveles, como veréis el comando no arroja ningún resultado. A continuación lanzamos el mismo comando pero indicándole que busque en los cuatro primeros niveles y vemos que encuentra el fichero deseado. Se le puede indicar un rango de niveles de profundidad: mad@mad-laptop:~/test$ sudo find / -maxdepth 3 -maxdepth 5 -name backup.sh En este ejemplo se buscara entre los niveles tres y cinco. Mediante el parámetro -exec podemos ejecutar otros comandos a medida que se encuentran ficheros: mad@mad-laptop:~/test$ find ./Stuff -iname "SoCkeTs.c" -exec md5sum {} \; En este caso, se buscan un fichero llamado "SoCkeTs.c" y se le calcula el hash MD5. Para invertir la búsqueda, se hace la siguiente manera: mad@mad-laptop:~/test$ find . -not -iname "sockets.c" El comando anterior encuentra todos los ficheros cuyo nombre no es "sockets" y limitando la búsqueda al directorio actual (mediante el punto .). Una función muy útil en cuanto a auditorias de seguridad es la búsqueda de ficheros por permisos: mad@mad-laptop:~/test$ find . -perm -g=x -type f -exec ls -l {} \; El ejemplo de arriba busca todos los ficheros situados en el directorio actual y que tengan permisos de ejecución para "el grupo". Otra función bastante útil puede ser la búsqueda de ficheros vacíos: mad@mad-laptop:~/test$ find ~ -empty Eso buscara todos los ficheros vacíos de la carpeta personal del usuario. Podemos buscar los ficheros mas grandes del sistema: mad@mad-laptop:~/test$ sudo find . -type f -exec ls -s {} \; | sort -n -r | head -3 Eso buscara los tres ficheros mas grandes de la carpeta "this" o en la que estamos. Usando la búsqueda por tipo podemos por ejemplo, buscar todos los ficheros ocultos: mad@mad-laptop:~/test$ find ~ -type f -name ".*" Recuerdo que en Unix/Linux los ficheros ocultos tienen un punto delante del nombre, en este caso se buscan todos los que empiezan por un punto, o sea, todos los ocultos. Otra función bastante útil es la búsqueda de ficheros por tamaño: mad@mad-laptop:~/test$ sudo find ~ -size +10M Encontrara todos los ficheros mayores de diez megas en la carpeta personal del usuario. Para las operaciones que mas usamos, podemos crear un alias: mad@mad-laptop:~/test$ alias rmao="find . -iname a.out -exec rm {} \;" Ese alias, al ejecutarlo, borrara todos los ficheros con el nombre "a.out" encontrados en el directorio actual. Post original: Introducción al comando Find |
Sistemas Operativos > GNU/Linux >