domingo, 30 de marzo de 2014

Buscar Archivos en linux/unix (Find)

Bueno ahora toco un tema bien divertido jeje buscar archivos en linux o bien Unix,
como ya muchos saben buscar un archivo aveces no es tan complejo otras veces es un verdadero dolor de cabeza pero para esto contamos con el comando find.

conforme encuentra mas busquedas las ire agregando en el post y les dare mas trucos para depurar sus resultados por ahora veremos lo basico.

find es un comando sumamente poderoso por que su utilidad no termina en solo buscar sino que ademas puede ejecutar y hacer excepciónes para desplegar una selección de resultados sumamente especifica.

Busquedas de ejemplo
(donde el punto "." significa el directorio actual y puede ser sustituido por otro path)

find . -name “miarchivo.txt”  
find . -name “java” buscar archivos  que empiezen con la palabra java

find . -name "*.java" busca archivos que terminen con la palabra .java

find . -perm 777  busca los archivos que tengan permisos 777

find . -mtime +1 encuentra los archivos modificados hace mas de un día.

find . -mtime -1 encuentra los archivos modificados hace menos de un día.

find . –name "*.txt" –print | xargs grep "test" 
busca la palabra "test" en todos los archivos que devuelva la busqueda de los archivos que terminene con extención *.txt (personalmente este es muy util)

find . -iname "archivo"
con iname es para hacer la busqueda case sensitive, de modo que no distinge entre mayusculas y minusculas.




---encuentra archivos entre la fecha del primer archivo y como maximo la fecha del segudo archivo y a los archivos encontrados los comprime con gzip

find . -name "*" -newer /home/miarchivo.log ! -newer /home/miarchivo_nuevo.log | xargs -I {} gzip {} 


 --- para saltarse un path, si la condicion es true, no entra en el folder
find / -path /mipath/Backup -prune -o -name domain.xml -print     //local para solaris


--- Find para determinar el tamaño de todos los directorios del sistema (usar con cuidado)
para solaris
find ./ -type d -depth  -exec du -sh {} + | sort -n

para linux
find ./ -type d -maxdepth 3 -exec du -sh {} + | sort -n


<<<< busca varios archivos y modifica en todos los archivos una linea >>>>
find . -name "test_file*" -exec perl -pi -e 's/cadenaen_a_remplazar/nueva_cadena/g' {} \;

(este comando puede variar, en linux podemos usar la opcion sed -i, pero para solaris no me tomaba el valor -i asi que pearl en modo interactivo es bastante eficiente)



No hay comentarios.:

Publicar un comentario