Y rematadamente complicado de utilizar, o al menos saber todo lo que hace.
He necesitado borrar todos los ficheros terminados en ~ que me genera kate como backup de las ediciones. Es una buena idea que lo haga, pero cuando el trabajo está listo, estorban.
Un vistazo a la página del manual de find y:
$ find * -name "*~" -exec rm {} \;
Lo que recorre el directorio actual y sus subdirectorios buscando ficheros con ~ al final del nombre (el * es un patrón de sustitución que todos conocemos), y ejecuta rm con el fichero como argumento (se denota por {}) y el \; indica el final del comando. Potente, ¿no?
Se podría intentar algo como:
$ for file in *~; do rm $file; done
Pero, aparte de ser más lento (para muchos, muchos ficheros o máquinas lentas, muy lentas, se nota), no nos recorrería subdirectorios.
En un vistazo a la página del manual de un comando poco conocido he solucionado mi problema puntual, pero además me doy cuenta de lo ignorante que soy :D.
Recordemos mi MD5 recursivo. Ahora lo haría de otra forma:
DIR="/path/al/directorio"
find $DIR/* -type f -exec md5 {} >> $DIR.MD5 \;
Aun siendo el mismo resultado, esta versión es más elegante. ¿Pero es mejor?
Voy a calcular el MD5 de todos los vídeos de las jornadas. Esta es una máquina potente, pero se trata de 1.2GB, con lo que alguna diferencia sí podemos ver:
$ time sh md5r-xarg real 0m58.498s user 0m15.380s sys 0m2.290s $ time sh md5r-find real 1m0.234s user 0m15.570s sys 0m2.100s
Sin ser una prueba rigurosa, pues va a ser lo mismo :o.
Ahora ya podríamos discutir si es mejor ser o no elegante, o ser más o menos comprensible, o simplemente... que cada cual sea él mismo y lo haga como bien buenamente pueda. Yo humildemente comunico aquí mis descubrimientos :).
![[xml]](/images/xml.gif)
