Each place has its own advantages - heaven for the climate, and hell for the society. -- Mark Twain

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 *

*
*