如何使用 sudo 删除目录的内容

Dav*_*gan 4 shell sudo centos

我有合法的需要清空我的帐户无权访问的目录(它是应用程序使用的缓存目录,由运行应用程序的帐户拥有。)我的帐户具有完全sudo权限(我认为),但我不知道如何删除相关目录的内容。我的账号进不去cd目录,只能进父目录。

sudo rm directory/*
Run Code Online (Sandbox Code Playgroud)

给出回应

cannot remove `directory/*': no such file or directory
Run Code Online (Sandbox Code Playgroud)

这似乎是一个应该有一个简单答案的问题,但我找不到它。

编辑:有问题的目录绝对不是空的:

sudo ls directory/
Run Code Online (Sandbox Code Playgroud)

返回超过 1000 个文件名。

Omn*_*nce 11

您遇到问题是因为您的 shell 试图扩展*到文件列表中,但由于您无权读取该目录,因此无法扩展。

我能想到两件可行的事情

sudo bash -c "rm directory/*"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,* 不是由您扩展的,而是由可以读取目录的 root 用户扩展的

或者

sudo find directory -type f -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

以上只会删除文件,而不是目录(否则它会directory连同它的内容一起删除),但我觉得不太容易出错。

编辑:在第一个选项中,我不小心写了 directory.* 而不是 directory/*