LINUX:帮助我recursionsearch整个目录上最后访问时间的文件

我最近inheritance了以前的pipe理员用于基本转储任何和所有东西的Linuxnetworking服务器。 我想要做的是获取目录中所有文件的列表,按其上次访问时间sorting,目的是清除公司没有使用的任何内容。

我假设我应该回去3个月,因为公司对他们的networking服务非常活跃,所以在过去3个月中一直没有被触及的东西很可能是自重的。

我试着用这个答案: https : //stackoverflow.com/questions/5566310/how-to-recursively-find-and-list-the-latest-modified-files-in-a-directory-with-s

但它似乎并不好。

作为一个警告,我的Linuxpipe理经验是非常初级的。 我很熟悉部署和configuration,但是我从来没有这样做(我的意思是,这是一个真正的混乱,它非常需要它)。

我并不反对把一个PHP脚本放在一起运行,但是,我也不是那么热衷于PHP,所以我真的需要一些简单的帮助。 理想情况下,如果我决定发现的所有内容都是垃圾,那么让脚本运行也会有一个删除文件选项,这将使我的一天,甚至是一个可以包含rm的BASH命令序列。

提前感谢您提供的任何和所有帮助,我真的很感激。

首先要做的事情:)备份一切!

为了这个例子的目的,我会假设你的文件在/var/www改变了它实际上在你系统上的任何地方。

  tar fcvz www-backup.tar.gz /var/www 

将在tar文件中创build您现有Web环境的备份(万一出现问题,您可以随时检索丢失的文件)

现在find在90天左右还没有被访问的文件:

  cd /var/www find . -atime 90 -type f -ls 

用修改过的时间列出屏幕上的文件。这样,您可以确保您要删除的文件是INDEED您想要删除的文件。 你可以把它缩小到可以上下滚动的状态。

  find . -atime 90 -type f -ls | less 

使用向上和向下箭头查看列表,退出types'q'。

如果一切都看起来不错:

  pwd 

确保你仍然在正确的工作目录。

  find . -atime 90 -type f echo rm -f {} \; > doit.sh 

这将创build一个名为doit.sh的文件,它将实际包含删除命令。

再读一遍:

  less doit.sh 

如果所有的文件看起来好的删除,那么你可以运行它:

  sh doit.sh 

这听起来正确的发现的胡同:

 $ cd $ROOT_OF_JUNKYARD $ find . -atime 90 

应列出过去90天内访问的所有文件。

注意 :跟踪atime属性对于文件系统来说有些昂贵,所以有些pipe理员把它关掉了,对于支持这样做的文件系统(Linux上的ext2)。 如果您的机器configuration为无法维护atime ,则此方法无效。 :|

一旦你快乐,所有列出的文件都是垃圾的,你可以简单地扩展命令来删除结果:

 $ find . -mtime 90 -exec rm -i \{\} \; 

rm-i选项使其交互 ,它会提示您确保每次删除。 这是为了保护你免受你的脚,这是很容易的recursion应用rm命令。