Ruby实现的一个强大的批量删除文件脚本分享

 更新时间:2015年01月16日 10:03:15   投稿:junjie  
这篇文章主要介绍了Ruby实现的一个强大的批量删除文件脚本分享,本文脚本实现对指定目录下的文件根据最后修改时间删除文件,需要的朋友可以参考下

最近打包服务器上的apk包又增多了,每次手动rm操作过于麻烦,于是花了几分钟写了一个可以对指定目录下根据最后修改时间和通配符匹配进行批量删除的脚本。将这个脚本加入crontab中之后,以后就再也不用担心多余的安装包占用磁盘空间了。

简短的代码

复制代码 代码如下:

#!/usr/bin/env ruby
# encoding: utf-8
#Usage: ruby removeOldFiles.rb "dest_file_pattern" days_ago
destFilePattern= ARGV[0]
daysAgo= ARGV[1]
edenTime = Time.now.to_i - daysAgo.to_i * 86400
Dir[destFilePattern].each{|child|
    system "rm -rfv #{child}"   if (File.mtime(child).to_i < edenTime)
}

如何使用

使用起来很简单,使用规则如下

复制代码 代码如下:

ruby removeOldFiles.rb "dest_file_pattern" days_ago

举个例子,比如我们想删除/tmp目录下的,所有最后修改时间为3天前的apk文件,我们只需要这样执行。

复制代码 代码如下:

ruby removeOldFiles.rb "/tmp/*.apk" 3

为什么第一个参数使用双引号

第一个参数为包含通配符的路径,在shell中存在一个工具就是glob会将包含通配符的路径匹配到具体的文件,比如这样的一段代码。

复制代码 代码如下:

!/usr/bin/env ruby
# encoding: utf-8
puts ARGV.length
ARGV.each do |a|
    puts "Argument: #{a}"
end

我们传入含有通配符的路径参数,得到的结果就是glob匹配后的文件名(前提是通配符可以匹配到文件)。

复制代码 代码如下:

10:41 $ ruby test.rb *.txt
2
Argument: abc.txt
Argument: def.txt

为了避免进行glob操作,需要对包含通配符的路径参数使用双引号标记。

复制代码 代码如下:

10:41 $ ruby test.rb "*.txt"
1
Argument: *.txt

所以在使用脚本时第一个参数一定要使用双引号。

如何遍历文件包含子目录内的

比如我们想遍历/tmp/abc/def.txt 我们可以使用/tmp/**/.txt即可

相关文章

  • Ruby设计模式编程中对外观模式的应用实例分析

    Ruby设计模式编程中对外观模式的应用实例分析

    这篇文章主要介绍了Ruby设计模式编程中对外观模式的应用实例分析,外观模式在Ruby on Rails开发项目中也经常被用到,需要的朋友可以参考下
    2016-03-03
  • Ruby解析处理YAML和json格式数据

    Ruby解析处理YAML和json格式数据

    这篇文章主要介绍了Ruby对YAML和json格式的数据处理方法,json序列化、json反序列化,json解析等操作,需要的朋友可以参考下
    2022-04-04
  • Ruby遍历文件夹同时计算文件的md5sum

    Ruby遍历文件夹同时计算文件的md5sum

    这篇文章主要介绍了Ruby遍历文件夹同时计算文件的md5sum,本文直接给出实现代码,需要的朋友可以参考下
    2015-05-05
  • 举例讲解Ruby中require的使用方法

    举例讲解Ruby中require的使用方法

    这篇文章主要介绍了Ruby中require的使用方法,用其来各种引用文件路径,需要的朋友可以参考下
    2015-07-07
  • Ruby实现的3种快速排序算法

    Ruby实现的3种快速排序算法

    这篇文章主要介绍了Ruby实现的3种快速排序算法,本文给出了快速排序的普通版本、快速排序的随机化版本、快速排序的利用了Ruby的语法糖的随机化版本三个版本,需要的朋友可以参考下
    2015-05-05
  • Ruby语言中的String深入理解

    Ruby语言中的String深入理解

    在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。
    2011-01-01
  • Ruby的运算符和语句优先级介绍

    Ruby的运算符和语句优先级介绍

    这篇文章主要介绍了Ruby的运算符和语句优先级介绍,本文先是给出了一些小例子来验证运算符和语句优先级,然后总结出一个优先级表,需要的朋友可以参考下
    2015-03-03
  • 你应该知道的Ruby代码风格

    你应该知道的Ruby代码风格

    Ruby是非常自由灵活的语言,所以不同的Rubist风格差异可能很大。那么在代码规范方面他们的差异大不大呢? 通过分析GitHub上托管的开源代码,得出了 一些有趣的结果 ,让我们一起来看看Rubist的喜好吧
    2014-03-03
  • ruby ftp封装实例详解

    ruby ftp封装实例详解

    这篇文章主要介绍了ruby ftp封装实例详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • ruby中并发并行与全局锁详解

    ruby中并发并行与全局锁详解

    最近在学习ruby,想着将自己学习的内容总结一下分享出来,下面这篇文章主要给大家介绍了关于ruby中并发并行与全局锁的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09

最新评论