Si tenemos muchos archivos en un directorio -más que <MAX_ARGVS>-y queremos borrarlos utilizando <rm> puede que nos diga <Lista de argumentos demasiado larga>. Para solucionar este problema, utilizaremos el comando find con la opción <-exec rm {} \;>, veamos un ejemplo donde queremos borrar todos los archivo .req de un directorio
# rm *.reqDebeis tener en cuenta que -como comenta Joan- <find> realiza las operaciones de forma recursiva, por lo tanto, debemos tener cuidad cuando ejecutamos estos comandos.
bash: /usr/bin/rm: Lista de argumentos demasiado larga
# find . -name "*.req" -exec rm {} \;
# ls -l *.req
*.req: No existe tal archivo o directorio
Referencias
Hola,
ResponderEliminarRecomendaria usar el parámetro "-maxdepth 1" porque el "find" buscara todos los ficheros de forma recursiva en el path y la sorpresa puede ser mayúscula:
find . -maxdepth 1 -name "*.req" -exec rm {} \;
Y otro detalle, si usas el /usr/gnu/bin/find de OpenSolaris tienes disponible el parametro -delete que evita usar el -exec :
find . -maxdepth 1 -name "*.req" -delete
Es increible lo que puedes llegar a hacer con el find.
Enhorabuena por el blog.
Hola Joan,
ResponderEliminarMuy buena aclaración. Es cierto que "find" nos permite hacer cosas "realmente potentes" pero si, hay veces que un error "tan sencillo" como ese, puede hacernos tirar de backup, xD
Lo cierto es que la opción "-maxdepth" no existe en Solaris, si que existe en GNU Find.
He modificado el post para aclarar un poco este tema,
Gracias,
Urko