删除文件夹中的旧文件

vik*_*ndo 0 linux bash

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

Raj*_*jat 7

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 {} \;
Run Code Online (Sandbox Code Playgroud)

唯一使用的 2 个命令是 find 和 rm。

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

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

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

  • 另外,当使用 *xargs* 时,请按照 `find ... -print0 | 进行操作。xargs -0 ...`(如果可用)以便正确处理带有空格(甚至嵌入的换行符)的路径名。 (4认同)
  • 您可以使用 `+` 代替 `\;` 和 `find` 以获得类似于 `xargs` 的性能。 (3认同)