how to truncate on glob files through sudo?

361 Views Asked by At

I need to truncate a big bunch of files with sudo. For only one this works:

sudo truncate -s 0 /var/lib/docker/containers/1cdd2386de3579-json.log

But with a glob like this /var/lib/docker/containers/*/*-json.log ...

$ LANG=C sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
truncate: cannot open '/var/lib/docker/containers/*/*-json.log' for writing:No such file or directory
1

There are 1 best solutions below

0
On BEST ANSWER

The globs are evaluated in the shell of the current user, before the elevated permissions of sudo are in effect (before the actual execution of sudo). The current user probably doesn't have permission to access the affected paths.

You can run it in a sh shell, that way the globs will be evaluated inside sudo's shell:

sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'