用于查找旧文件的脚本&写入列表,然后删除旧文件

时间:2013-11-12 16:04:53

标签: linux bash shell unix

所以我从这开始

find /path-to-directory -type f -mtime +60 -exec ls -l {} \; > /path-to-directory/filenames.txt
find /path-to-directory -mtime +60 -exec rm -f {} \;

它为我提供了超过60天的文件列表,但我希望txt文件按顺序显示文件 从最旧到最新,我不在乎订单是否诚实地反转,但我似乎无法正确上下文

我还需要将-type f保留在-exec rm -f上,还是暗示

目标是记录已删除的文件。我很想知道我是否可以获取目录的变量以匹配文本文件的名称。

2 个答案:

答案 0 :(得分:2)

  

我希望txt文件按照从最旧到最新的顺序显示文件

尝试将ls -ltrxargs

一起使用
find /path-to-directory -type f -mtime +60 -print0 | xargs -0 ls -ltr > /path-to-directory/filenames.txt

  

我还需要在-exec rm -f上保留-type,或者它会是什么   暗示

如果您只想删除文件,则需要指定-type f。否则它也会删除目录。

答案 1 :(得分:1)

  

但我希望txt文件按从最旧到的顺序显示文件   最新

find /path-to-directory -type f -mtime +60 -printf "%T@ %p\n" | sort

会按所需顺序返回文件列表。但是,它包含一个额外的字段(自1970年1月1日,格林威治标准时间00:00后的秒数)。为了删除附加字段,您可以说:

find /path-to-directory -type f -mtime +60 -printf "%T@ %p\n" | sort | cut -d' ' -f2

  

我还需要将-type f保留在-exec rm -f上,还是可以   暗示

不,你需要保留它,否则find也会返回目录。