【发布时间】:2013-12-05 03:52:04
【问题描述】:
我使用该系统命令删除文件夹及其内容:
system('/bin/rm -rf ' . escapeshellarg($path))
但我不知道如何仅删除其内容。我试过了,但文件夹还是满的:
system('/bin/rm -rf ' . escapeshellarg($path.'/*'))
有什么想法吗?
【问题讨论】:
-
+1 使用
escapeshellarg()
我使用该系统命令删除文件夹及其内容:
system('/bin/rm -rf ' . escapeshellarg($path))
但我不知道如何仅删除其内容。我试过了,但文件夹还是满的:
system('/bin/rm -rf ' . escapeshellarg($path.'/*'))
有什么想法吗?
【问题讨论】:
escapeshellarg()
这应该可行:
system('/bin/rm -rf ' . escapeshellarg($path) . '/*')
为什么?
escapeshellarg() 将引用 $path,这会将您的代码引导至 shell 命令:
rm -rf '/path/*'
以及 system() 内部调用的 shell 将不再扩展 *。
【讨论】:
这不起作用,因为您正在转义星号,这会导致 bash 忽略它。但是为了得到你预期的结果,bash 需要将星号扩展到目录中的所有文件。
欲了解更多信息,请访问http://www.gnu.org/software/bash/manual/html_node/Filename-Expansion.html#Filename-Expansion
【讨论】: