佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Ruby實現(xiàn)的一個強大的批量刪除文件腳本分享

Ruby實現(xiàn)的一個強大的批量刪除文件腳本分享

熱門標簽:語音系統(tǒng) 百度AI接口 Win7旗艦版 呼叫中心市場需求 硅谷的囚徒呼叫中心 企業(yè)做大做強 電話運營中心 客戶服務

最近打包服務器上的apk包又增多了,每次手動rm操作過于麻煩,于是花了幾分鐘寫了一個可以對指定目錄下根據(jù)最后修改時間和通配符匹配進行批量刪除的腳本。將這個腳本加入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)
}

如何使用

使用起來很簡單,使用規(guī)則如下

復制代碼 代碼如下:

ruby removeOldFiles.rb "dest_file_pattern" days_ago

舉個例子,比如我們想刪除/tmp目錄下的,所有最后修改時間為3天前的apk文件,我們只需要這樣執(zhí)行。

復制代碼 代碼如下:

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

為什么第一個參數(shù)使用雙引號

第一個參數(shù)為包含通配符的路徑,在shell中存在一個工具就是glob會將包含通配符的路徑匹配到具體的文件,比如這樣的一段代碼。

復制代碼 代碼如下:

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

我們傳入含有通配符的路徑參數(shù),得到的結果就是glob匹配后的文件名(前提是通配符可以匹配到文件)。

復制代碼 代碼如下:

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

為了避免進行glob操作,需要對包含通配符的路徑參數(shù)使用雙引號標記。

復制代碼 代碼如下:

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

所以在使用腳本時第一個參數(shù)一定要使用雙引號。

如何遍歷文件包含子目錄內的

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

您可能感興趣的文章:
  • Ruby中遍歷目錄的簡潔方法
  • Ruby創(chuàng)建“關鍵字”同名方法別名的方法
  • 詳細介紹Ruby中的正則表達式

標簽:崇左 海南 山西 山西 喀什 長沙 安康 濟南

巨人網(wǎng)絡通訊聲明:本文標題《Ruby實現(xiàn)的一個強大的批量刪除文件腳本分享》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    醴陵市| 内丘县| 冕宁县| 五指山市| 东明县| 永新县| 宁海县| 宁化县| 额尔古纳市| 绍兴县| 台东县| 西藏| 略阳县| 涿州市| 繁峙县| 竹溪县| 池州市| 西贡区| 卫辉市| 沈丘县| 黔西县| 建平县| 新疆| 宁明县| 通辽市| 芒康县| 江都市| 榆中县| 夏邑县| 公主岭市| 山东| 新化县| 锡林郭勒盟| 辽中县| 黑河市| 鞍山市| 石城县| 铜梁县| 华亭县| 怀安县| 星座|