Ruby实现的一个强大的批量删除文件脚本分享_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即可

时间: 2024-09-21 22:20:22

Ruby实现的一个强大的批量删除文件脚本分享_ruby专题的相关文章

Ruby实现的删除已经合并的git分支脚本分享_ruby专题

使用Git管理代码工程,着实方便了很多,但是当做完feature分支或者完成hotfix之后,总是忘记删除这些无用的分支,一个一个地删除着实麻烦,重复手工劳动不符合程序员的风格,于是写了一个简单的脚本.一键删除那些不需要的分支,让多余的干扰信息离开视线. 删除哪些分支? 删除的为Merge(合并)操作的源分支.如果工程正在处于分支A(HEAD为A分支),分支B已经合并到了分支A,即A分支包含了B分支的内容,则会删除B分支. 代码 复制代码 代码如下: #!/usr/bin/env ruby #

linux系统中的批量删除文件与空文件删除的命令介绍

本章为大家详细的整理了,在linux系统中批量删除文件和空文件删除的命令,请大家"对症下药" linux下面删除文件或者目录命令rm(remove) 功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件. 参 数: -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录. -f或--f

linux 批量删除文件与空文件删除命令

linux下面删除文件或者目录命令rm(remove) 功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件. 参 数: -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录. -f或--force 强制删除文件或目录. -i或--interactive 删除既有文件或目录之前先询问用户. -r或-R或

Python批量按比例缩小图片脚本分享

  这篇文章主要介绍了Python批量按比例缩小图片脚本分享,本文直接给出实现代码,需要的朋友可以参考下 图片太大了,上百张图用photoshop改太慢,就想到用python写个简单的批处理.功能简单就是把原图按比例缩小 代码如下: # -*- coding: cp936 -*- import Image import glob, os #图片批处理 def timage(): for files in glob.glob('D:1*.JPG'): filepath,filename = os.

php批量删除操作代码分享

批量删除多条记录,对于比较多的信息,如果没有批量删除功能是非常麻烦的. 1.从数据库中拿一张表过来,写个复选框进行选择 可以加全选复选框 连接数据库什么的都不写啦 代码: <form action="piliangshanchu.php" method="post" > <table border="1" cellspacing="0" cellpadding="0"> <tr

微信怎么批量删除消息 微信批量删除消息方法分享

各位微信软件的用户们来详细的解析分享一下微信批量删除消息的方法. 方法分享: 1.打开聊天界面,长按某个消息. 2.在弹出选项里选择[更多]. 3.这时长按的那个消息被勾选了,同时其他消息也出现了勾选框. 4.勾选需要一起删除的消息. 5.选择底栏的[删除]图标. 6.确认的话就点击[删除]即可完成一起删除消息. 好了,以上的信息就是小编给各位微信的这一款软件的用户们带来的详细的微信批量删除消息的方法解析分享的全部内容了,各位看到这里的用户们小编相信你们现在是很清楚了批量删除消息的方法了吧,,那

批量删除文件夹下包含指定字段的文件

using System; using System.IO; using System.Text.RegularExpressions; class App { static void Main() { Console.WriteLine("##########################[程序使用说明]############################"); Console.WriteLine("--目 的:本程序用来删除指定文件夹下包含指定字段的文件用-----

DOS命令批量删除文件及制作该命令的批处理命令详解_DOS/BAT

点击"开始"→"运行",输入:"CMD"后回车.然后在"命令提示符"窗口下输入: del F:\_desktop.ini /f /s /q /a (F代表你要操作的盘符,如果是C盘就把F改成C) 强制删除F盘下所有目录内(包括X盘本身)的_desktop.ini文件并且不提示是否删除. /f 表示强制删除文件 /s表示子目录都要删除该文件 /q表示无声,不提示 /a根据属性选择要删除的文件 R 只读文件 S 系统文件 H 隐藏

Ruby中执行Linux shell命令的六种方法详解_ruby专题

在Ruby中,执行shell命令是一件不奇怪的事情,Ruby提供了大概6种方法供开发者进行实现.这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令. exec exec会将指定的命令替换掉当前进程中的操作,指定命令结束后,进程结束. 复制代码 代码如下: exec 'echo "hello world"' print 'abc' 执行上述的命令,结果如下,我们可以看到没有abc的输出,可以看出来,在执行echo "hello world"命令后