Advertising:

Ejemplos comando find

From ChuWiki
Jump to navigation Jump to search

El comando find nos permite buscar ficheros que cumplan determinadas características en un árbol de directorios. La sintaxis básica es

$ find <directorio_de_busqueda> <expresion>

Es muy útil para concatenar este resultado con otros comandos. Por ejemplo, si queremos compilar todos los fuentes java de un directorio hacia abajo, podemos usar el comando así

$ javac `find directorioFuentes -name *.java`

Atención a la comilla, que es importante cual se usa.


Algunos ejemplos[edit]

Listado de todos los ficheros recursivamente de un directorio hacia abajo

$ find .

Listado de ficheros que cumplan determinada expresión regular. Se puede hacer con la opción -name

$ find . -name *.java     #listado de los *.java
$ find . -name *.[ch]     #listado de los *.c y *.h

Si en el directorio actual hubiese algún fichero *.java, la expresión *.java se "expande" antes de ejecutar el comando, por lo que no daría el resultado esperado. Para evitarlo, se puede entrecomillar

$ ls
fichero.java
$ find . -name *.java   #*.java es expande a fichero.java antes de ejecutarse el find
fichero.java
$ find . -name "*.java" #así no se expande
fichero.java
path/otro.java

Listado de todos los fuentes .cpp y .h de un directorio hacia abajo. La opción -o hace de "OR" entre las expresiones -name *.h y -name *.cpp

$ find . -name *.h -o -name *.cpp

Listado de ficheros modificados en las últimas 24 horas

$ find . -mtime 0

Listado de fichero modificados entre hace 24 y 48 horas

$ find . -mtime 1

Listado de ficheros modificados en menos de 48 horas

$ find . -mtime -1

Listado de ficheros modificados hace más de 48 horas

$ find . -name +1

Otro uso habitual es con xargs para lanzar un comando sobre cada resultado. Ejemplo: compilar todos los .java en una carpeta

  $ find . -name *.java | xargs javac

de modo que lanzaría un javac sobre cada línea que devuelva el find