2010-01-01 01:50:57 +0000 2010-01-01 01:50:57 +0000
297
297

¿Cómo limpiar el contenido de un archivo desde la línea de comandos?

Tengo un archivo de registro que tiene un montón de cosas en él que ya no necesito. Quiero borrar el contenido.

Sé cómo imprimir el contenido en la pantalla:

cat file.log

Sé cómo editar el archivo, línea por línea:

nano file.log

Pero no quiero borrar cada línea de una en una. ¿Hay alguna manera de hacerlo en un comando sin destruir el archivo para hacerlo?

Respuestas (14)

488
488
488
2010-01-01 10:20:23 +0000

En bash, sólo

> filename

servirá.

Esto te dejará con un archivo vacío nombre de archivo.

p.s.

Si necesitas sudo llama, por favor considera usar truncate como respuesta aquí .

133
133
133
2013-08-20 14:21:43 +0000

Puede usar el comando de usuario : truncar

truncate -s 0 test.txt

(“-s 0” para especificar el tamaño) http://www.commandlinefu.com/commands/view/12/empty-a-file

35
35
35
2010-01-01 01:55:01 +0000

Podrías hacer esto:

echo -n "" > file.log

Usando > para escribir la entrada (nula) de echo -n al archivo.

Usando >> apagaría la entrada nula al archivo (efectivamente no haciendo nada más que touch haciéndolo).

30
30
30
2014-07-25 22:51:07 +0000
: > file.log

Igual que > filename en Bash, pero funciona en más conchas (crédito) . Redirige la salida del true incorporado (que no tiene salida) al filename.

11
11
11
2012-12-06 20:48:34 +0000

ZSH

>! filename

ZSH protegerá a los usuarios de los golpes en los archivos usando el operador de redirección io >. Si utiliza >! puede forzar el truncamiento de un archivo existente.

Si desea que ZSH utilice el comportamiento de redirección de Bash, donde no hay protección contra el “clobbering” de archivos, entonces debe configurar la opción clobber para su shell.

Más información: http://zsh.sourceforge.net/Doc/Release/Redirection.html

9
9
9
2012-09-12 18:21:28 +0000

SI quieres hacerlo desde dentro de un editor vim en la línea de comandos, puedes probar esto:

vim file.txt

Presiona Esc.

:1,$d

Presiona Enter.

Encontrarás todas las líneas borradas.

4
4
4
2016-05-10 12:45:57 +0000

Bajo el mando también debería funcionar:

cat /dev/null > file.log
4
4
4
2010-01-01 01:59:43 +0000
$ rm file.log; touch file.log

o

$ cat > file.log

seguido de control-d.

o… o… o…

Ah. Aquí hay una versión de un solo comando:

$ dd if=/dev/null of=file.log
2
2
2
2015-01-30 19:11:35 +0000

Si necesitas solicitar el privilegio de superusuario para acceder al archivo, la respuesta aceptada no funcionará. Usar esto sí funciona:

truncate -s0 file

o explícitamente con sudo:

sudo truncate -s0 file

Más información aquí http://www.commandlinefu.com/commands/view/12/empty-a-file

1
1
1
2018-03-15 09:36:54 +0000

Si tiene espacios en los nombres de los archivos, use:

for file in /path/to/file/*; do > "$file"; done

(No pude incluirlo en los comentarios a la respuesta anterior porque no tengo 50 de reputación. A veces las limitaciones son contra productivas).

1
1
1
2015-10-25 22:27:56 +0000

Pocas alternativas:

ex +%d -scwq file.log
cp /dev/null file.log
vi +%d -escwq file.log
install -m600 /dev/null file.log
0
0
0
2016-06-22 16:35:06 +0000

Además, si tienes varios archivos puedes usar los siguientes:

for file in /path/to/file/*; do > $file; done

Esto es útil para los archivos de registro en el mismo directorio.

0
0
0
2010-01-01 03:14:40 +0000

¿Una línea a la vez?

Prueba vi(m), el encantador editor de texto que puede hacer cualquier cosa. En este caso, navega a una línea, pulsa d (para borrar), y d otra vez (para la línea).

0
0
0
2014-03-04 00:10:08 +0000

Con mis permisos esto es lo único que funcionó:

touch temp.txt
sudo mv temp.txt original-file.txt

Preguntas relacionadas

6
10
7
5
3