如何在Ruby中编写重命名模式



我有几个这种类型的文件:

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"one_answers"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/-[^-]+././'
#!/usr/bin/env ruby
require 'fileutils'
list = Dir.glob('*.mp4')
list.each do |src|
  if src =~ /^(Filed+)/
    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.rb

答案是:

#!/usr/bin/env ruby
require 'fileutils'
list = %x(ls -1 | grep .mp4).split(",")
list.each do |i|
  puts i.gsub(/ (vip)-S+./, ".")
end

感谢Philip Hallstrom和http://rubular.com/

相关内容

  • 没有找到相关文章

最新更新