Pat*_*cow 3 php unlink delete-file removeall
我有几个目录,其中包含一些文件:
/test1/123.jpg
/test1/124.jpg
/test1/125.jpg
/test2/123.jpg
/test2/124.jpg
Run Code Online (Sandbox Code Playgroud)
我要删除所有除了/test1/124.jpg or /test2/124.jpg?
我知道目录名称和文件名.有没有办法在Linux环境中使用php而且可能unlink?
Hap*_*her 25
只需编辑$ dir和$ leave_files即可编辑位置和文件.
$dir = 'test1';
$leave_files = array('124.jpg', '123.png');
foreach( glob("$dir/*") as $file ) {
if( !in_array(basename($file), $leave_files) )
unlink($file);
}
Run Code Online (Sandbox Code Playgroud)
你会为每个目录运行一次.
还记得如果目标目录与此脚本不在同一文件夹中,则使$ dir成为完整路径(没有斜杠).
8 年前,我写了这个快速技巧,已被接受,但请考虑到这一点
rm删除mv和移动 shell 命令。shell_exec也不是微不足道的,因为您无法像使用exec或system等替代方案那样获得退出代码)然而,它的优点是可以在单个 shell 命令中运行所有删除操作,并且不需要对每个处理的文件进行额外的排除查找,这使得它在高删除与保留比率下运行得相当快,如果您正在寻找性能的话:
for ($i=1;$i<=2;$i++){
shell_exec ('mv /test'.$i.'/124.jpg /test'.$i.'/keep.jpg');
shell_exec ('rm /test'.$i.'/12*.jpg');
shell_exec ('mv /test'.$i.'/keep.jpg /test'.$i.'/124.jpg');
}
Run Code Online (Sandbox Code Playgroud)
无论如何,如果您在这里查看,在我的答案之后添加了一些其他建议基于取消链接的解决方案的答案,这(如下面的评论中所述)是一种更好的方法,我也建议这样做
添加错误处理,因为unlink当文件正在使用或不允许脚本执行用户修改它时,可能会因权限问题而无法删除现有文件。
在运行处理不知不觉的长文件列表的脚本之前,请始终使用 ini_get('max_execution_time');检查脚本执行超时设置(如有必要,请考虑使用set_time_limit为脚本延长超时设置)。
| 归档时间: |
|
| 查看次数: |
6167 次 |
| 最近记录: |