如何通过 sudo 截断 glob 文件?

how to truncate on glob files through sudo?

我需要用 sudo 截断一大堆文件。只有一个有效:

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

但是像这样的 glob /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

sudo 的提升权限生效之前(在 sudo 的实际执行之前),在当前用户的 shell 中评估 glob。当前用户可能没有权限访问受影响的路径。

您可以 运行 它在 sh shell 中,这样 glob 将在 sudo 的 shell:

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