Truncar ficheros en Linux

Aprendemos a truncar o vaciar ficheros en sistemas GNU/Linux. Muchas veces vamos a necesitar vaciar ficheros, esto es dejarlos a 0, sin borrarlos, por ejemplo en el caso de ficheros de registro o en la salida de nohup.

Al final todo maestrillo tiene su librillo, es decir, cada persona puede tener su forma favorita de hacer las cosas. Podemos utilizar comandos como echo, cat o true, aquí vemos algunos ejemplos:

Truncar ficheros con el comando echo
$ cat hola.txt
En un lugar de la mancha
$ ls -l hola.txt
-rw-r--r-- 1 davidochobits davidochobits 25 Sep 23 11:53 hola.txt
$ echo -n "" > hola.txt
$ ls -l hola.txt
-rw-r--r-- 1 davidochobits davidochobits 0 Sep 23 11:53 hola.txt

Con el parámetro -n no genera el salto de línea final.

Truncar ficheros con el comando cat
$ ls -l hola.txt
-rw-r--r-- 1 davidochobits davidochobits 25 Sep 23 11:56 hola.txt
$ cat /dev/null > hola.txt
$ ls -l hola.txt
-rw-r--r-- 1 davidochobits davidochobits 0 Sep 23 11:58 hola.txt

En este caso hemos utilizado el fichero especial /dev/null, que el sistema utiliza como un cajón desastre para enviar todo lo que queramos dejar a 0. Se suele utilizar mucho en guiones o scripts para cuando no queremos dejar ningún registro.

Truncar ficheros con el comando true
$ ls -l hola.txt
rw-r--r-- 1 davidochobits davidochobits 25 Sep 23 12:05 hola.txt
$ true > hola.txt
$ ls -l hola.txt
-rw-r--r-- 1 davidochobits davidochobits 0 Sep 23 12:06 hola.txt

Este comando no es muy conocido. Con true si miramos su definición con el comando man es no hacer nada, con éxito. También se suele utilizar en los scripts, para que una salida siempre sea exitosa.

Truncar varios ficheros a la vez en Linux

Si queremos truncar una serie de ficheros que coincidan con un patrón, lo podemos hacer utilizando comandos como find o utilizando for, por ejemplo:

# Utilizando find
find -type f -name "hola*.txt" -exec sh -c 'true > $1' sh {} \;
# Utilizando un for
for i in $(find -type f -name "hola*.txt"); do true > $i; done

Y esto es todo, espero que esta información os sea de utilidad en algún momento.

Fuentes consultadas

Página de man de find

Página de man de cat

Página de man de true

3 Respuestas

  1. Lecquio dice:

    Yo descubrí hace poco que se pueden truncar simplemente con:

    hola.txt

  2. Fran dice:

    También se puede así:

    $ :> archivo.txt

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies
A %d blogueros les gusta esto: