-2

我无法删除由 php mkdir 创建的文件夹

for I in `echo $*`
do
    find $I -type f -name "sess_*" -exec rm -f {} \;
    find $I -type f -name "*.bak" -exec rm -f {} \;
    find $I -type f -name "Thumbs.db" -exec rm -f {} \;
    find $I -type f -name "error.log" -exec sh -c 'echo -n > "{}"' -f {} \;
    find $I -type f -path "*/cache/*" -name "*.*" -exec rm -f {} \;
    find $I -path "*/uploads/*" -exec rm -rdf {} \;
done

我想删除下/uploads/所有文件和文件夹请帮我谢谢...

4

3 回答 3

1

您应该考虑更改您的 find 命令以使用 -o pragma 将您的条件连接在一起,因为最终的 exec 基本相同。这将避免重复递归文件系统。

其他答案解决了您对 php mkdir 的担忧。我只是补充一点,它与它是用 php mkdir 而不是任何其他代码或命令创建的这一事实无关。这是由于所有权和权限。

于 2012-03-27T20:37:44.743 回答
0

您可能应该-depth在命令中添加删除upload目录本身之前的子目录。

我担心,-path但我不熟悉它。

还可以考虑使用+代替\;来减少执行的命令数量。

于 2012-03-27T20:25:58.513 回答
0

我认为这很可能是因为php在 apache 或另一个 http 服务器中运行的用户与调用 bash 脚本的用户不同。或者,在 uploads/ 中上传的文件可能归 http 服务器的用户所有,而不是调用它的用户。

确保在与 http 服务器相同的用户下运行 bash 脚本。

要找出哪个用户拥有哪个文件,请执行以下操作:

ls -l

如果您以 root 身份运行 bash 脚本,则无论如何都应该可以将其删除,但不建议这样做。

更新

要以 nautilus 脚本的 root 身份运行它,请使用以下内容作为您的 nautilus 脚本:

gksudo runmydeletescript

然后将所有其他代码放入另一个文件,其路径与您放置的任何内容相同runmydeletescript并在其上运行chmod +x这是极其危险的!

于 2012-03-27T20:26:37.790 回答