删除旧的备份文件

时间:2009-09-15 10:52:53

标签: bash shell

# find /home/shantanu -name 'my_stops*' | xargs ls -lt | head -2

上面提到的命令将列出最新的2个文件,其中包含my_stops的名称。我想保留这两个文件。但我想删除当前目录中以“my_stops”开头的所有其他文件。

5 个答案:

答案 0 :(得分:14)

如果您定期创建备份,则使用find的-atime选项可能很有用,因此只能选择早于最后两个备份的文件进行删除。

对于每日备份,您可以使用

$ find /home/shantanu -atime +2 -name 'my_stops*' -exec rm {} \;

但是另一种表达方式(除了-atime)可能更适合你。

在示例中,我使用+2表示超过2天。

答案 1 :(得分:4)

这是一个非递归解决方案:

ls -t my_stops* | awk 'NR>2 {system("rm \"" $0 "\"")}'

说明:

  • ls命令列出顶部最新的
  • 的文件
  • awk命令指出对于那些行(NR =记录数,即行数)大于2,删除它们
  • 仅在文件名具有嵌入空格
  • 的情况下才需要引号字符

答案 2 :(得分:1)

请参阅here

(ls -t|head -n 2;ls)|sort|uniq -u|xargs rm

答案 3 :(得分:1)

这将显示你从第二行前进;)

find / home / shantanu -name'my_stops *'| xargs ls -lt |尾巴-n +2

请记住,find是递归的;)

答案 4 :(得分:1)

没有递归方法:

find /home/folder/ -maxdepth 1 -name "*.jpg" -mtime +2