如何使用 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 一起使用