正则表达式实际上是多余的,因为我们只需要做一些简单的字符串匹配:
$dir = 'the_directory/';
$handle = opendir($dir) or die("Problem opening the directory");
while ($filename = readdir($handle) !== false)
{
//if ($filename != 'index.php' && substr($filename, -3) == '.php')
// I originally thought you only wanted to move php files, but upon
// rereading I think it's not what you really want
// If you don't want to move non-php files, use the line above,
// otherwise the line below
if ($filename != 'index.php')
{
rename($dir . $filename, '/tmp/' . $filename);
}
}
那么对于这个问题:
或者,如何先将所有文件(包括 index.php)移动到 /tmp/,然后再将 index.php 放回 /public_html/,您认为哪个 CPU 消耗较少?
它可以完成,并且在您的 CPU 上可能会稍微容易一些。但是,这并不重要有几个原因。首先,您已经通过 PHP 以一种非常低效的方式执行此操作,因此除非您愿意在 PHP 之外执行此操作,否则此时您不应该真正关注这对您的 CPU 造成的压力。其次,这会导致更多的磁盘访问(特别是如果源目录和目标目录不在同一个磁盘或分区上)并且磁盘访问比您的 CPU 慢得多。