Ejemplos comando find
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[editar]
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