我无法删除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/
下删除所有文件和文件夹,请帮助我谢谢......
答案 0 :(得分:1)
您应该考虑更改find命令以使用-o pragma将条件连接在一起,因为最终的exec基本相同。这样可以避免重复递归文件系统。
其他答案解决了您对php mkdir的担忧。我只想补充一点,它与使用php mkdir而不是任何其他代码或命令创建的事实无关。这是由于所有权和权限。
答案 1 :(得分:0)
您应该在命令中添加-depth
,以便在目录本身之前删除upload
的子目录。
我担心-path
,但我不熟悉它。
另请考虑使用+
代替\;
来减少执行的命令数。
答案 2 :(得分:0)
我认为这很可能是因为php
在apache或其他http服务器下运行的用户不同于调用bash脚本。或者上传/上传的文件可能由http服务器的用户拥有,而不是用户调用它。
确保在与http服务器相同的用户下运行bash脚本。
要找出哪个用户拥有哪个文件:
ls -l
如果你以root身份运行bash脚本,你应该能够删除它,但不建议这样做。
要以root用户身份运行nautilus脚本,请使用以下命令作为nautilus脚本:
gksudo runmydeletescript
然后将所有其他代码放入另一个文件中,其路径与您为runmydeletescript
放置的路径相同,并在其上运行chmod +x
。 这非常危险!