删除早于 x 天的文件

删除早于 x 天的文件

我遇到过这样的情况:我必须从多个位置清理超过 7 天的文件,如下所示。

/home/user1/Out/vendor
/home/user2/Out/vendor
/home/user3/Out/vendor
/home/user4/Out/vendor
/home/usern/Out/vendor

有人可以告诉我如何在不删除文件夹的情况下实现这一目标吗?我想从文本文件中调用用户。

答案1

中描述的技术删除早于X 天+ 将为您工作:

find /path/to/directory/ -mtime +7 -delete

但它遗漏了你的问题的几个部分。

  1. ...来自多个地点...

    您可以为单个命令指定多个起点find。做

    查找 /home/user1/Out/vendor /home/user2/Out/vendor /home/user3/Out/vendor /home/user4/Out/vendor … /home/usern/Out/vendor -mtime +7 -删除
    或者
    查找 /home/user1/Out/供应商 /home/user2/Out/供应商 /home/user3/Out/供应商 \
         /home/user4/Out/vendor … /home/usern/Out/vendor -mtime +7 -删除
    为了可读性。

    但您不必像这样显式列出所有目录。如果你是字面上地处理 user1, user2, ..., , (其中usernn是一个数字),你可以做

    查找 /home/user{1,2,3,4,…,n}/Out/vendor -mtime +7 -删除
    甚至
    查找/home/用户{1..n}/Out/vendor -mtime +7 -删除
    (字面上使用两个点(.),又名 bash 中的句号或句号)。

    但我猜你可能并没有真正处理 user1, user2, ..., ;您的用户可能有usern名称。  但同样的原则也适用;你可以做

    查找 /home/{用户1,用户2,用户3,用户4,…,用户n}/Out/vendor -mtime +7 -删除
    例如,
    查找 /home/{alice,bob,cathy,david,…,nathan}/Out/vendor -mtime +7 -delete
    甚至
    找到 ~{alice,bob,cathy,david,…,nathan}/Out/vendor -mtime +7 -delete

  2. ...如何在不删除文件夹的情况下实现这一目标?

    只需-type f在命令中添加:

    查找 /home/{用户1,用户2,用户3,用户4,…,用户n}/出/供应商-f型-mtime +7 -删除

相关内容