删除文件夹中的旧文件

删除文件夹中的旧文件

如何使用 Linux 下的 bash 删除特定文件夹中超过一年的所有文件?

答案1

find /u1/database/prod/arch -type f -mtime +3 -exec rm {} \;

vi samefilename 
#!/bin/bash

find /u1/database/prod/arch -type f -mtime +3 -exec rm {} \;

仅使用两个命令:find 和 rm。

Find 查找文件 (-type f),这排除了超过 3 天 (-mtime +3) 的目录。它找到的所有文件都提供给 rm (-exec rm {} \; )。

您还可以将 rm 语句放在 find 之外,这样应该会更快:

查找 /u1/database/prod/arch -type f -mtime +3 | xargs rm

答案2

我发现了另一种方法。适合特定日期。

touch --date="2010-1-1" x
find -not -newer x|xargs rm

答案3

tmpwatch做得很好,例如:

/usr/sbin/tmpwatch $[24*365] /tmp 

手册摘录:

tmpwatch 递归删除在给定的时间内未访问的文件。通常,它用于清理用于临时保存空间的目录,例如 /tmp。

tmpwatch [-u|-m|-c] [-MUadfqstvx] [--verbose] [--force] [--all]
                  [--nodirs] [--nosymlinks] [--test] [--fuser] [--quiet]
                  [--atime|--mtime|--ctime] [--dirmtime] [--exclude <path>]
                  [--exclude-user <user>] <hours> <dirs>

答案4

ubuntu 中的 tmpwatcher 或“tmpreaper”。

http://linux.about.com/library/cmd/blcmdl8_tmpwatch.htm

与 -c 一起使用

相关内容