查找并移动不在文本列表Linux中的文件

时间:2015-02-03 20:18:53

标签: mysql linux redhat

我正在清理旧数据库的存储,需要删除当前未使用的所有文件。

我有一个活动的文件和路径列表,并希望将所有未激活的文件移动到我可以查看的单个位置,然后在不需要时将其删除。

我在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中的同一子目录中的所有文件

希望更清楚

1 个答案:

答案 0 :(得分:0)

我的建议是:创建一个临时文件夹来保存你想要的文件并将它们移动到那里。然后将文件夹中的其余文件移动到其他位置,移回原始文件,并删除不需要的文件。这样您就不必枚举不需要的文件(您可以让shell执行此操作)。

请注意,在大多数文件系统中,移动文件很便宜 - 它不需要复制位,只需更新目录。