[英]How to delete all files except large list from database?
我在文件系统中存储了大量文件,其中一些是mp4,jpg和pdf
我想删除所有文件,除了其中一些是从mysql查询中提取的文件。 例如:RandomMovie_04.mp4,AwesomeImage.jpg
这是我的文件结构
files/
messages/
images/
45/ --> this is the ID in the DB
46/
articles/
images/
124/
125/
videos/
124/
207/
我不想删除的文件是从数据库中提取的
我正在使用PHP(CakePHP)和MySQL
尝试了一下,它只适用于一个文件,但是我找不到用文件列表执行此操作的方法
find * -maxdepth 5 -not -name "RandomMovie_04.mp4" -type f -exec ls "{}" \; > list.txt
这工作了两个
find * -maxdepth 5 -not -name "RandomMovie_04.mp4" -not -name "AwesomeImage.jpg" -type f -exec ls "{}" \; > list.txt
我必须对所有排除的文件执行此操作(在php脚本中)? 例如-not -name文件A -not -name文件B -not -name to_the_infinite ...
谢谢
对不起,如果我的英语很烂:(
如果可以从PHP脚本中获取名称数组,则可以为find
创建字符串,如下所示:
<?php
$files = array("RandomMovie_04.mp4", "AwesomeImage.jpg", "GreatDoc.pdf");
echo implode(' -or ', array_map(function($x) { return "-name '$x'"; }, $files));
哪个输出:
-name 'RandomMovie_04.mp4' -or -name 'AwesomeImage.jpg' -or -name 'GreatDoc.pdf'
您的find
命令可能是:
find /path/to/dir -not \( $(php files.php) \) -delete
find
将删除所有未找到其名称的文件。
请注意,您应该从单独的目录运行此文件,否则将删除PHP文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.