Lo que he aprendido: trucos para borrar desde la terminal

Aquí en mi gesta para parecer que sé usar el ordenador he aprendido nuevos truquillos, en este caso para borrar cosas. Os cuento.

Borrar el contenido de un fichero

Me acabo de encontrar un truco todo loco para dejar un archivo vacío pero que se le mantengan los permisos. Simplemente redirigimos nuestro querido periférico nulo al archivo en cuestión:

cat /dev/null > ARCHIVO

Así nos ahorramos el tener que borrarlo, crear uno nuevo y asignarle los permisos correspondientes.

Para ver que efectivamente se mantienen los permisos he hecho esta prueba:

$ echo "Letra aleatoria" > archivo
$ chmod +x archivo
$ ls -l archivo
-rwxr-xr-x 1 usuario grupo 16 jul  2 12:09 archivo
$ cat /dev/null/ > archivo
$ ls -l archivo
-rwxr-xr-x 1 usuario grupo 0 jul 2 12:12 archivo

También se ve que el archivo se vacía, ya que el último ls nos dice que su tamaño es de cero.

Borrar el contenido de una carpeta

Todos conocemos el mítico rm -r para borrar una carpeta y su contenido, pero a mí al menos me da miedillo. Ahora he aprendido sobre dos opciones que me ayudan a saber lo que estoy haciendo:

  • --verbose, -v: explica lo que va borrando.
  • --interactive, -i: nos va preguntando si queremos borrar o no cada uno de los archivos. También hay una versión -I que solo pregunta al borrar más de tres cosas, lo que es menos molesto.

Por ejemplo, si usamos la opción -v vemos lo siguiente:

$ rm -rv carpeta
«carpeta/archivo» borrado
directorio borrado: «carpeta/»

La versión interactiva hace algo así:

$ rm -ir carpeta
rm: ¿descender al directorio «carpeta/»? (s/n) s
rm: ¿borrar el fichero regular «carpeta/archivo»? (s/n) s
rm: ¿borrar el directorio «carpeta/»? (s/n) s

Hasta aquí el briconsejo de hoy. ¿Qué trucos usáis vosotros para borrar? Comentadme debajo para que aprendamos todos 🙂

Referencias

Man de rm

Anuncios

4 pensamientos en “Lo que he aprendido: trucos para borrar desde la terminal

  1. victorhck

    rmdir sólo borra directorios vacíos… también tiene una larga opción para ignorar y borre aunque no estén vacíos…
    aunque con escribir:
    rmdir –i+Tab
    y pulsar Tab, el autocompletado obra la magia y escribe el resto, y a borrar se ha dicho!

    If there’s a shell, there’s a way! 🙂

    Responder
  2. josemanuel

    Hoy he aprendido cómo borrar el más antiguo de una lista de archivos cuyos nombres empiezan igual:

    ls -t prefijo* | tail -n 1 | xargs rm --
    

    Por supuesto, la idea se puede generalizar. Si se quiere borrar el más moderno:

    ls -rt prefijo* | tail -n 1 | xargs rm --
    

    Si se quiere borrar los X más antiguos (o más modernos):

    ls -t prefijo* | tail -n X | xargs rm --
    

    O si en vez de un prefijo es un sufijo:

    ls -t *sufijo | tail -n X | xargs rm --
    

    Nosotros lo que queríamos era dejar el más moderno y borrar los demás:

    ls -rt prefijo* | head -n -1 | xargs rm --
    

    Etcétera. Se agrupa y ordena por cualquier criterio que permita ls y se selecciona la cantidad que se quiera con tail (o head). Es muy sencillo. También se puede crear un script y automatizar el borrado usando un array con los prefijos y un bucle.

    Responder

¡Opina sin miedo! (Puedes usar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s