On Fri, Sep 28, 2018 at 2:37 PM Dave Ulrick <d-ulrick@comcast.net> wrote:
Update:

> $ time cat infile >outfile
>
> If 'infile' is on the order of 140 MB, 'time' might show something as low as:
>
> real  0m0.146s
> user  0m0.000s
> sys   0m0.109s
> CPU % 74.29
>
> or as high as:
>
> real  0m0.328s
> user  0m0.000s
> sys   0m0.109s
> CPU % 33.31
>
> If 'outfile' doesn't exist, the 'cat' runs much more quickly:
>
> real  0m0.082s
> user  0m0.000s
> sys   0m0.081s
> CPU % 99.77

When an existing file is truncated, which the shell does when you use stdout redirection, all the blocks that were in it have to be moved to the file system's free block list. Exactly what happens there may depend on what kind of file system you are using, but it is extra work that doesn't have to be done if you are creating a new file, which may explain the time difference.

--Greg