如何使用sudo删除目录内容

如何使用sudo删除目录内容

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

sudo rm directory/*

给出响应

cannot remove `directory/*': no such file or directory

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

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

sudo ls directory/

返回超过 1000 个文件名。

答案1

您遇到问题是因为您的 shell 试图扩展*到文件列表,但它不能扩展,因为您无权读取该目录。

我能想到两件事可行

sudo bash -c "rm directory/*"

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

或者

sudo find directory -type f -exec rm {} \;

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

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

答案2

任何当你去做sudo rm事情的时候,如果你不使用显式路径,你应该认真考虑你在做什么。

sudo rm /explicit/path/to/directory/*应该管用。如果directory;中没有文件,您仍然会收到该错误。你可以用rm -f(不是 rm -fr除非你绝对地确定你在做什么)。

相关内容