歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Ruby批量修改文件創建時間

Ruby批量修改文件創建時間

日期:2017/3/1 9:43:39   编辑:Linux編程

電腦裡面的相片,因為復制來,復制去的.時間不太對.然後傳到iphone就亂了.那邊是以創建時間什麼的來排序.然後折騰了一個腳本改創建時間.網上搜索了一下.沒看見有什麼好辦法可以改. 只有使用一個比較SB的方法了.

首先把相片的exif信息中的時間取出,然後把系統時間改為這個時間.再復制一下.OK

考慮有的jpg可能沒有拍攝時間,就以創建時間和修改時間去比較,按比較小的來。

重要文章閱讀:Ruby入門--Linux/Windows下的安裝、代碼開發及Rails實戰 http://www.linuxidc.com/Linux/2014-04/100242.htm

Ruby on rails初體驗系列文章:

http://www.linuxidc.com/Linux/2014-04/100245.htm
http://www.linuxidc.com/Linux/2014-04/100246.htm
http://www.linuxidc.com/Linux/2014-04/100247.htm

《Ruby for Rails中文版》.((美)David Black ).[PDF] http://www.linuxidc.com/Linux/2014-03/97569.htm

Ubuntu 13.04下Ruby的安裝 http://www.linuxidc.com/Linux/2013-06/85734.htm

代碼如下:

require 'exifr'
require 'fileutils'
require 'find'
dist_dir = "D:/Old/Pic"

def chang_ctime(name)
temp_dir = File.join(name.split('/')[0..-2]).sub('Old','New')
unless Dir.exist?(temp_dir)
FileUtils.mkdir_p(temp_dir)
end
if File.file?(name)
if name[-4..-1].downcase == '.jpg'
temp_date = EXIFR::JPEG.new(name).date_time_original.to_s
if temp_date.size != 0
temp_date = temp_date.split
`date #{temp_date[0]}`
`time #{temp_date[1]}`
FileUtils.cp name, name.sub("Old","New")
else
if File.ctime(name) > File.mtime(name)
temp_date = File.mtime(name).to_s.split
`date #{temp_date[0]}`
`time #{temp_date[1]}`
else
temp_date = File.ctime(name).to_s.split
`date #{temp_date[0]}`
`time #{temp_date[1]}`
end
FileUtils.cp name, name.sub("Old","New")
end
else
if File.ctime(name) > File.mtime(name)
temp_date = File.mtime(name).to_s.split
`date #{temp_date[0]}`
`time #{temp_date[1]}`
else
temp_date = File.ctime(name).to_s.split
`date #{temp_date[0]}`
`time #{temp_date[1]}`
end
FileUtils.cp name, name.sub("Old","New")
end
end
end

Find.find(dist_dir) do |path|
chang_ctime(path)
end

puts "OK"

Copyright © Linux教程網 All Rights Reserved