我有几个PHP脚本用于从我整个服务器上的所有文件夹中删除error_log,.DS_Store等文件。我只是将这些脚本上传到我的根目录(public_html),并在我想要进行一些清理时定期访问它们。当我访问脚本加载位置的URL时,它会自动开始工作。这一切都很完美,我想继续使用它。
但是,我很乐意将这种自动化整合到一个脚本中,我可以列出一系列不需要的文件,如下所示:
$unwanted_filenames = array(
'.DS_Store',
'.localized',
'Thumbs.db',
'error_log'
);
只需浏览所有文件夹并删除我在数组中列出的所有文件。
我现在使用的脚本是过度的,列出了每个单独的文件以及它释放了多少等等。我是一个极简主义者,并且会喜欢用最少的代码来完成工作的最简单的脚本。
因此,当我访问该页面时,它会自动运行,白色屏幕上没有任何东西可以,然后可能是一个简单的“完成。释放3MB”。信息。就是这样。
答案 0 :(得分:2)
好的 - 这是PHP中最短但我能想到的就是这样做:
$unwanted_filenames = array(
'.DS_Store',
'.localized',
'Thumbs.db',
'error_log'
);
$it = new RecursiveDirectoryIterator("/"); // Set starting directory here
foreach(new RecursiveIteratorIterator($it) as $file) {
if (in_array(basename($file), $unwanted_filenames)) {
@unlink($file); // THe @ hides errors, remove if you want to see them
}
}
希望不言自明 - 是的,它确实存在子目录(即“递归”位)。
你说minamalistic,所以我没有包括释放的空间,但是如果要添加它,只需在取消链接之前添加$ FreedSpace + = filesize($ file)。
答案 1 :(得分:0)
我使用它,你可以这样做:
<?php
$dir = "/var/www/vhosts/"; //Write your dirname here
$rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
$total_thumbs = 0;
$total_ds = 0;
foreach ($rii as $file) {
if ($file->isDir()){
continue;
}
$parcala = explode('.', $file->getFilename());
$uzanti = end($parcala);
if ($file->getFilename() == 'Thumbs.db') {
unlink($file->getPathname());
$total_thumbs++;
}
if ($uzanti == '.DS_Store' || $file->getFilename() == 'DS_Store' || $file->getFilename() == '.DS_Store') {
unlink($file->getPathname());
$total_ds++;
}
}
echo $total_thumbs . ' Thumbs.db file and ' . $total_ds . ' DS_Store file deleted!';
如果您想要自动化,可以使用 Cronjob