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.