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即可

相关文章

  • 详解Lua中的表的概念及其相关操作方法

    详解Lua中的表的概念及其相关操作方法

    这篇文章主要介绍了Lua中的表的概念及其相关操作方法,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • GitHub倡导的Ruby代码编写风格总结

    GitHub倡导的Ruby代码编写风格总结

    GitHub网站服务器端主要就是使用的Ruby作为编程语言,因而GitHub所提倡采用的Ruby书写规范也就显得更有些说服力XD 下面我们就整理除了这份GitHub倡导的Ruby代码编写风格总结,需要的朋友可以参考下
    2016-05-05
  • Ruby实现网页图片抓取

    Ruby实现网页图片抓取

    本文给大家分享的是个人使用ruby编写的抓取网页图片的代码,十分的简单实用,有需要的小伙伴可以参考下。
    2016-04-04
  • Ruby中的钩子方法详解

    Ruby中的钩子方法详解

    这篇文章主要介绍了Ruby中的钩子方法详解,本文讲解了什么是钩子方法、included、Devise中的 included、extended、ActiveRecord中的 extended、prepended、inherited等内容,需要的朋友可以参考下
    2015-05-05
  • 安装Ruby和安装Rails详细步骤详解

    安装Ruby和安装Rails详细步骤详解

    这篇文章主要介绍了安装Ruby和安装Rails详细步骤详解,包括解决rbenv安装慢,更新rbenv的ruby版本列表,多版本ruby共存,需要的朋友可以参考下
    2022-04-04
  • ruby判断一个数是否为质数(素数)示例

    ruby判断一个数是否为质数(素数)示例

    这篇文章主要介绍了ruby判断一个数是否为质数(素数)示例,需要的朋友可以参考下
    2014-05-05
  • Ruby中区分运行来源的方法

    Ruby中区分运行来源的方法

    这篇文章主要介绍了Ruby中区分运行来源的方法,本文讲解的是类似Python中的if __name__ == '__main__':效果,其实Ruby中也有类似语法,需要的朋友可以参考下
    2015-01-01
  • Ruby类继承、抽象类、类拓展混入、代理类实例

    Ruby类继承、抽象类、类拓展混入、代理类实例

    这篇文章主要介绍了Ruby类继承、抽象类、类拓展混入、代理类实例,本文对这几种类扩展方法分别给出了代码实例,需要的朋友可以参考下
    2015-01-01
  • ruby 正则表达式 教程

    ruby 正则表达式 教程

    ruby 正则表达式 教程...
    2007-11-11
  • Rails脚手架使用实例

    Rails脚手架使用实例

    这篇文章主要介绍了Rails脚手架使用实例,通过8个步骤来实现一个完整案例,需要的朋友可以参考下
    2014-06-06

最新评论