我正在清理旧数据库的存储,需要删除当前未使用的所有文件。
我有一个活动的文件和路径列表,并希望将所有未激活的文件移动到我可以查看的单个位置,然后在不需要时将其删除。
我在RHEL5上运行mySQL 5.0
如何使用xargs或find查找不在activefiles.txt上的路径/文件
非常感谢所有帮助。谢谢。
以下更新:
让我试着更清楚。我有一个mysql数据库,其中包含其中一个表中的路径和文件名。
mysql> select FilePath from metadata;
+-------------------------------------------------------+
| FilePath |
+-------------------------------------------------------+
| ./sample/XYZ/filename1 |
| ./sample/XYZ/filename2 |
| ./sample/XYZ/filename3 |
+-------------------------------------------------------+
3 rows in set (0.00 sec)
我需要做的是将此列放入文本文档中,然后删除目录XYZ中不在此列表中的所有子目录和文件。
例如:
$mysql -u root -e ‘select FilePath from database.metadata;’ > deletelist.txt
$xargs rm > deletelist.txt
这将删除从mysql查询返回的所有文件。
我想要做的是删除不在deletelist.txt中的同一子目录中的所有文件
希望更清楚
答案 0 :(得分:0)
我的建议是:创建一个临时文件夹来保存你想要的文件并将它们移动到那里。然后将文件夹中的其余文件移动到其他位置,移回原始文件,并删除不需要的文件。这样您就不必枚举不需要的文件(您可以让shell执行此操作)。
请注意,在大多数文件系统中,移动文件很便宜 - 它不需要复制位,只需更新目录。