删除了 dir 中的所有文件,除了 json 文件中的文件

删除了 dir 中的所有文件,除了 json 文件中的文件

我有一个静态资产服务器,文件夹中包含超过 100 万张图像,其中大部分我不再需要了。

我在 .json 文件中有一个我仍然需要的文件名列表。

在 bash 中如何删除该目录中的每个文件,除非文件名存在于 json 列表中?

提前致谢!

答案1

假设这些文件名不需要引号(没有空格,也没有特殊字符):

$ cat keep.json 
["file1.png", "file2.png"]

find -not '(' $(php -r  'echo "-name " . implode(" -o -name ", json_decode(file_get_contents("keep.json")));') ')' -delete

从要删除其内容的文件夹运行命令。如果您在没有 的情况下运行-delete,将显示匹配文件的列表(而不是删除)。

相关内容