繁体   English   中英

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

[英]Find and move files that are NOT in a text list Linux

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

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

我正在RHEL5上运行mySQL 5.0

如何使用xargs或查找来找到不在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中的所有文件

希望那一点更加清晰

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM