Suceda lo que suceda, siempre habrá alguien que lo veía venir.

Too Much Information

Si alguna vez has intentado eliminar el contenido de una carpeta en UNIX1, es posible que te hayas encontrado con este problema:

$ rm * -f
-bash: /bin/rm: Argument list too long

Es decir, en la carpeta hay demasiados archivos y rm no puede con todos ellos. Una posible solución:

$ for i in `ls` ; do rm -f "$i" ; done

Banda sonora: ‘Too Much Information’ de The Police.


Notas:
  1. Quiero decir Linux, imagino que también pasa en BSD, OpenBSD, Mac OS X, etcétera. []

4 comentarios

  1. Enviado el 25 de Enero de 2008 a las 22:06 | Enlace permanente

    No sabes tú cuantas veces leí ese mensaje cuando estaba intentando procesadar una burrada de imágenes con un pequeño script para mi tesis… llegué a odiar bash por segundos ;-)

  2. Enviado el 25 de Enero de 2008 a las 22:45 | Enlace permanente

    Buena para probar el coloreado de codigo. :)

    Aún así: ‘rm -f “$i” ‘

    Si no lo cierras los espacios vuelven un nombre en varios argumentos inválidos y se vuelve riesgoso.

    Yo soy más parcial siempre del “ls -1 | while read line ; do rm -f “$line”;done” pero es ya cosa de costumbre de cada quien.

  3. Enviado el 25 de Enero de 2008 a las 23:14 | Enlace permanente

    Gracias por la corrección, eduo. Acabo de actualizar la entrada. ¿Es así?

  4. Enviado el 25 de Enero de 2008 a las 23:39 | Enlace permanente

    Así funcionaría perfecto siempre y cuando un fichero no tenga en el nombre unas comillas (ah, el bueno de Unix, que no tiene casi caracteres prohibidos).

    -rw-r–r– 1 eduo eduo 0 Jan 25 23:38 ”
    -rw-r–r– 1 eduo eduo 0 Jan 25 23:38 ,
    -rw-r–r– 1 eduo eduo 0 Jan 25 23:38 \

    Sip. Eso es un fichero llamado ‘”‘, uno llamado ‘,’ y uno llamado ‘\’

Deja un comentario

Nunca haremos pública ni compartiremos tu dirección de correo electrónico. Los campos obligatorios están marcados con un *

*
*