我有合理的需要清空我的帐户无权访问的目录(它是应用程序使用的缓存目录,由运行该应用程序的帐户拥有。)我的帐户拥有完全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
除非你绝对地确定你在做什么)。