Hace ya algún tiempo comentaba diferencias entre SH (pdksh) y BASH, y hoy me he encontrado algo habitual cuando manejas directorios con muchos ficheros, o como me ha pasado a mi: liberando espacio de /tmp/.
Tenía gran cantidad de ficheros temporales, y otras cosas que no quería borrar, bueno... para eso están los patrones:
# rm /tmp/loquesea.* -bash: /bin/rm: La lista de argumentos es demasiado larga
¡Anda! Y, ¿ahora qué hago? Bueno, lo más fácil es find(1) al rescate:
# find /tmp/ -name "loquesea.*" -exec rm {} \;
Esta solución hace que se ejecute el rm sobre cualquier fichero encontrado en /tmp/ o subdirectorios que cumpla el patrón indicado. Ojo que el patrón está entre comillas (no lo interpreta el shell, sino find), y veamos porqué la orden original tenía problemas.
Cuando indicamos en el shell un patrón de sustitución, BASH en este caso, reemplaza el patrón por una lista de ficheros que se ajustan a la descripción.
Eso quiere decir que si tenemos:
$ ls fichero1 fichero2 fichero3 ficha
Al hace un rm fichero*, lo que realmente se ejecuta es: rm fichero1 fichero2 fichero3.
El comando rm(1) puede procesar listas de elementos a eliminar, pero el tamañano de la lista es limitado, y con los ficheros temporales que tenía esta mañana... he superado el límite.
Apuesto a que hay otras formas de solucionar la papeleta, si alguien se anima, que use los comentarios ;).

![[xml]](/images/xml.gif)
