我有几个这类文件:
File-1 (vip)-eojUBB_8V_4.mp4
File-2 (vip)-Ek2iyeeL1Vc.mp4
File-3 (vip)-Gh8F6OJa0gU.mp4
File-4 (vip)-SvL_aZt3zyU.mp4并希望将文件重命名为:
File-1.mp4
File-2.mp4名称"File1“和"File2”只是一个例子。实际上,文件有一个不同的名称,但在文件名的末尾有"(vip)-smthing.mp4“。
我写了剧本:
#!/usr/bin/env ruby
require 'fileutils'
list = %x(ls -1 | grep .mp4).split(",")
list.each do |i|
File.rename(i, i.gsub(/(vip)*.mp4/, ".mp4"))
end但我不明白,我需要在gsub里面写什么图案。
Bash示例工作很好,但我需要在Ruby上编写它。
ls -1 | sed 's/-[^-]\+\././'发布于 2015-07-29 21:56:05
答案是:
#!/usr/bin/env ruby
require 'fileutils'
list = %x(ls -1 | grep .mp4).split(",")
list.each do |i|
puts i.gsub(/ \(vip\)-\S+\./, ".")
end感谢菲利普·哈尔斯特罗姆和http://rubular.com/
发布于 2015-07-29 20:13:33
#!/usr/bin/env ruby
require 'fileutils'
list = Dir.glob('*.mp4')
list.each do |src|
if src =~ /^(File\d+)/
dst = "#{$1}.mp4"
puts "renaming '#{src}' to '#{dst}'"
File.rename(src, dst)
end
end输出:
$ ls
File1 (vip)-dHsq8aF2P0U.mp4 File2 (vip)-asdfsad.mp4 foo.rb
$ ruby foo.rb
renaming 'File1 (vip)-dHsq8aF2P0U.mp4' to 'File1.mp4'
renaming 'File2 (vip)-asdfsad.mp4' to 'File2.mp4'
$ ls
File1.mp4 File2.mp4 foo.rbhttps://stackoverflow.com/questions/31710098
复制相似问题