5

I need to delete all lines in a file, but leave essentially an empty file with no content and no lines. As best I know, one can do this:

rm file.txt 2> /dev/null
touch file.txt

However, is there a simpler, more canonical solution in BASH?

Village
  • 20,305
  • 41
  • 116
  • 158

3 Answers3

18

This is a pretty fast way I always use:

> file.txt

It completely empties the file and updates the modification time.

fedorqui
  • 252,262
  • 96
  • 511
  • 570
9

You can use truncate.

truncate -s 0 filename
Kirby Todd
  • 11,070
  • 3
  • 31
  • 58
5

Another (brutal) way to empty a file would be the following:

cat /dev/null > filename
trikelef
  • 2,172
  • 1
  • 21
  • 37