Androide

Cómo truncar (vaciar) archivos en Linux

Quitar silencios a temas musicales por lote en GNU/Linux

Quitar silencios a temas musicales por lote en GNU/Linux

Tabla de contenido:

Anonim

En algunas situaciones, es posible que desee truncar (vaciar) un archivo existente a una longitud cero. En palabras simples, truncar un archivo significa eliminar el contenido del archivo sin eliminarlo.

Truncar un archivo es mucho más rápido y fácil que eliminarlo, volver a crearlo y configurar los permisos y la propiedad correctos. Además, si el archivo se abre mediante un proceso, la eliminación del archivo puede provocar un mal funcionamiento del programa que lo utiliza.

Este tutorial explica cómo truncar archivos a tamaño cero en sistemas Linux utilizando la redirección de shell y el comando truncate .

Redireccionamiento de Shell

El método más fácil y más utilizado para truncar archivos es usar el operador de redirección de shell.

El formato general para truncar archivos usando la redirección es:

: > filename

Analicemos el comando:

  • El : dos puntos significa true y no produce salida. El operador de redirección > redirige la salida del comando anterior al archivo dado. filename , el archivo que desea truncar.

Si el archivo existe, se truncará a cero. De lo contrario, se creará el archivo.

En lugar de : también puede usar otro comando que no produce salida.

Aquí hay un ejemplo del uso del comando cat para generar el contenido del dispositivo /dev/null , que solo devuelve un carácter de fin de archivo:

cat /dev/null > filename

Otro comando que se puede usar es echo . La opción -n le dice a echo no agregue una nueva línea:

echo -n > filename

En la mayoría de los shells modernos como Bash o Zsh, puede omitir el comando antes del símbolo de redireccionamiento y usar:

> filename

Para poder truncar un archivo, debe tener permisos de escritura en el archivo. Por lo general, usaría sudo para esto, pero los privilegios de root elevados no se aplican a la redirección. Aquí hay un ejemplo:

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

Hay varias soluciones que permiten redirigir con sudo . La primera opción puede ejecutar un nuevo shell con sudo y ejecutar un comando dentro de ese shell utilizando el indicador -c :

sudo sh -c '> filename'

Otra opción es canalizar la salida al comando tee , elevar los privilegios tee con sudo y escribir la salida vacía en un archivo dado:

: | sudo tee filename

comando truncate

truncate es una utilidad de línea de comandos que le permite reducir o ampliar el tamaño de un archivo a un tamaño determinado.

La sintaxis general para truncar archivos a tamaño cero con el comando truncate es la siguiente:

truncate -s 0 filename

La opción -s 0 establece el tamaño del archivo en cero.

Por ejemplo, para vaciar el registro de acceso de Nginx usaría:

sudo truncate -s 0 /var/log/nginx/access.log

Vaciar todos los archivos de registro

Con el tiempo, su unidad de disco puede estar llena de muchos archivos de registro grandes que ocupan grandes cantidades de espacio en disco.

El siguiente comando vaciará los archivos que terminan con ".log" en el directorio /var/log :

sudo truncate -s 0 /var/log/**/*.log

Una mejor opción sería rotar, comprimir y eliminar los archivos de registro con la herramienta logrotate .

Conclusión

Para truncar un archivo en Linux, use el operador de redirección > seguido del nombre del archivo.

terminal truncado