- Por defecto, el comando find, busca en la ruta actual y todos sus subdirectorios. No obstante se pueden modificar estas características y otras más según la tabla abajo descrita.
- Se pueden encadenar los resultados de find con pipe '|' para manipular los resultados. Ejemplo, mostrar los 3 archivos mas grandes del sistema
- find / -type f -exec ls -s {} \; | grep sort -n -r | head 3
- Cada archivo, carpeta, enlace simbólico o duro, etc., es guardado en el sistema de archivos con un numero irrepetible conocido como 'inode', de esta manera podemos tener dos o mas archivos con nombres similares pero inodes distintos.
16187429 archivo1.txt
16187430 archivo1 .txt
16187431 archivo1.txt
Buscar por nombre. | find -name "nombreArchivo.txt" |
Buscar por nombre ignorando mayúsculas/minúsculas. | find -iname "nombreArchivo.txt" |
Buscar archivos que no empaten con el criterio de búsqueda | find / -not -name "nombreArchivo.txt" |
Buscar solo en la ruta raíz (nivel 1) y sus subdirectorios directos (nivel 2). | find / -maxdepth 2 -name "archivo.txt" |
Buscar solo en la ruta raíz (nivel 1), en los subdirectorios directos (nivel 2) y en las carpetas dentro de los subdirectorios directos (nivel 3) sin incluir más niveles. | find / -maxdepth 3 -name "archivo.txt" |
Buscar solo entre los subdirectorios directos de raíz (nivel 2) y las carpetas de estos (nivel 3), sin incluir mas niveles. | find / -mindepth 2 -maxdepth3 -name archivo.txt |
Ejecutar un comando sobre cada resultado de la búsqueda. Cada parámetro después de '-exec' se considera como parámetro para el comando hasta encontrar el parámetro '\;'. Se sustituye '{}' por el archivo actual de los resultados de find. El comando se ejecuta desde el directorio que se ejecuto find. En este ejemplo, eliminar cada archivo encontrado en la búsqueda | find -name "archivo.txt" -exec rm {} \; |
Buscar por numero inode | find -inum 16187429 |
Buscar con base a los permisos en forma simbólica: Todos los archivos con únicamente permiso de lectura para el grupo. Se puede usar u (user), g (grupo), o (otros). Para este ejemplo traería ----r----- archivoSoloLecturaGrupo.txt | find . -perm g=r |
Buscar con base a los permisos en forma simbólica: Cualquier archivo que tenga permiso de lectura para el grupo. Para este ejemplo traería ----r----- archivoSoloLecturaGrupo.txt ----rw---- archivoLecturaEscrituraGrupo.txt -rw-rw-rw- archivoLecturaEscrituraTodos.txt | find . -perm -g=r (nota el guion antes de la g) |
Buscar con base a los permisos de forma octal. En este caso, los dueños puedan hacer todo, y el resto (grupo y otros) puedan solo leer y ejecutar | find . -perm 755 |
Buscar todos los archivos que tengan la palabra 'test' en minúsculas y estén vacíos | find / -maxdepth 1 -empty -name "*test*" |
Buscar un enlace simbólico llamado java o cualquiera que tenga "virtual" sin importar mayúsculas ni minúsculas | find / -lname "java" find / -ilname "virtual" |
Buscar todos los archivos que empate su ruta con el criterio. Para este caso traería como resultados los archivos de estas rutas: ./src/misc ./src/metal/misc ./sroot/tormenta/pasc | find / -path "./sr*sc" |
Buscar todos los archivos que empaten con la ruta sin importar mayúsculas/minúsculas. Por ejemplo: /proyecto40/moduloCore/target /proyecto40/moduloDao/target /proyecto40/pruebas/target /ProfesionalPrint/inkJET | find / -path "pro*et" |
Buscar por tipo de archivo, los cuales pueden ser: b - bloque special (buffered) c - carácter especial (unbuffered) d - directorio p - named pipe f - archivo normal l - enlace simbólico s - socket D - door (solo en Solaris) | find -type f |
Buscar por que empate el criterio con una expresión regular. En este caso archivos que empiecen con 'sr', 'sT', 'Sr' o 'ST'. | find -regex "[sS][rT]*" |
Si queremos buscar los archivos creados después de cierta fecha, por ejemplo la fecha de creación de cierto archivoReferencia.txt. | find -newer archivoReferencia.txt |
Encontrar archivos por tamaño. Menores a 30MB, mayores a 15GB, que sean exactamente de 7KB. Las opciones son: b (bloques y es por defecto si no se especifica), c (bytes), w (words o 2bytes), k (kilobytes), M (megabtes), G (gigabytes) | find -size -30M find -size +15G find -size 7k |
Existen muchas mas opciones para configurar el comando que las puedes obtener directamente con '# man find' o puedes guiarte por:
linux.about.com
www.grymoire.com
me ha sido muy util una de las opciones marcadas en la tabla. muchas gracias
ResponderEliminar