我在/home/customers/customer1、/home/customers/customer2 等路径中维护了很多(大约 1000 个)客户文件夹。现在客户来了又走,我不想保留我的工作驱动器中一段时间(例如 2 年)未修改的文件夹。
我需要的是一个简单的脚本
a) 将所有候选文件夹视为给定路径(例如/home/customers/)的直接后代(即不递归到子文件夹,因为我不想分割客户的数据);
b) 为每个文件夹计算最近的修改时间;
c) 如果某些文件夹(例如/home/customers/mycustomer231)的修改时间早于 1 年,则将其移动到指定路径(例如/var/backup/oldcustomers)。
最简单的实现方法是什么?
用什么语言?在巴什?珀尔? Python?其他语言?
我了解 Bash 的一些基础知识。我知道,有一种方法可以通过嵌套 find <..> -exec
来实现它在另一个内部并使用 this thread 的建议,但生成的代码肯定看起来不容易理解和维护。
我还了解其他提到的语言的一些基础知识,足以理解它们的大部分代码,但没有足够的经验来编写自己的解决方案。
(是的,我可以花一个月以上的时间来学习其中一种语言,但是为了解决我的孤立问题,时间的代价太昂贵了。我确信,这个问题是基本的,并且专业的人与很多人一起工作/home/中的用户正在清除旧条目,已经有解决方案。)
最佳答案
要查找 365 天前修改的所有目录:
$ find /home/customers -maxdepth 1 -type d -mtime +365 -exec stat -c '%y %n' {} \;
将它们移动到新位置:
$ find /home/customers -maxdepth 1 -type d -mtime +365 -exec mv {} /var/backup/oldcustomers \;
关于python - 移动包含旧文件的目录的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647930/