批量更改linux文件时间,Ruby批量修改文件创建时间

电脑里面的相片,因为复制来,复制去的.时间不太对.然后传到iphone就乱了.那边是以创建时间什么的来排序.然后折腾了一个脚本改创建时间.网上搜索了一下.没看见有什么好办法可以改. 只有使用一个比较SB的方法了.

首先把相片的exif信息中的时间取出,然后把系统时间改为这个时间.再复制一下.OK

考虑有的jpg可能没有拍摄时间,就以创建时间和修改时间去比较,按比较小的来。

Ruby on rails初体验系列文章:

代码如下:

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"

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值