El comando find, es un comando muy potente de búsqueda desde linea de comandos, pero esta potencia a su vez se torna en su contra por la multitud de opciones y parámetros que nos encontramos. Aqui unos ejemplos que me han servido a mi para realizar varias tareas del día a día.
Ejemplo1:
Buscar los archivos temporales (o de respaldo), que me ha generado el editor de textos. Dos maneras diferentes
Comando :
1: find . -name ._* -type f -print
2: find . -iregex “^.*\/\._.*$”
Ahora haciendo uso de tuberias y xargs seriamos capaz de borrar estos ficheros que ha encontrado
Comando:
1. find . -name ._* -type f -print | xargs rm -f
2. find . -iregex “^.*\/\._.*$” | xargs rm -f
Explicación :
Busca en el directorio actual, los archivos de la forma “._nombrearchivo.ext”. Luego hemos hecho el uso de tuberias y xargs, para realizar la acción de borrado de dichos ficheros.
Ejemplo2:
Queremos buscar archivos con cierta/s extensiones en una o varias ubicaciones.
Tenemos dos maneras de hacerlo, con nuestras queridas a la vez que odiadas expresiones regulares, o con parámetros propios del find
Comando:
find /ubicacion/1 /ubicacion/2 -iregex “.*\(wmv\|avi\|mpg\|mkv\)$”
find /ubicacion/1 /ubicacion/2 -iname ‘*.avi’ -o -iname ‘*.mpg’ -o -iname ‘*.wmv’ -o -iname ‘*.mkv’
Nos devolveria alto tal que asi
/ubicacion/1/archivo124.mpg
/ubicacion/1/directorio3/archivo344.avi
/ubicacion/2/archivo12.mpg
/ubicacion/2/directorio7/archivo45.mkv
Ahora otra vez, si queremos lucirnos y aprovechar la potencia de los parámetros y de las tuberias, podriamos genernos una lista numerada con el nombre de los archivos encontrados. Explicado por pasos sería :
- agregamos parámetro -printf ‘%f\n’ Esto devolveria algo tal que asi:
archivo124.mpg
archivo344.avi
archivo12.mpg
archivo45.mkv
- Ahora hacemos uso de tuberia y usamos el awk de la siguiente manera : | awk ‘{print FNR “\t” $0}’. Esto nos imprime la lista numerada (FNR), tabulación (“\t”), y el nombre del fichero ($0). Devolvería el siguiente resultado
1 archivo124.mpg
2 archivo344.avi
3 archivo12.mpg
4 archivo45.mkv
- Ya si queremos rizar el rizo, y no queremos mostrar las extensiones, y mostrar solo el nombre del fichero, podriamos cambiar la anterior tubería, por esta otra: | awk ‘{gsub(/\.(avi|mpg|wmv|mkv)$/,” “);print FNR “\t” $0}’ .Resultando:
1 archivo124
2 archivo344
3 archivo12
4 archivo45
