首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Ruby编写重命名模式?

如何用Ruby编写重命名模式?
EN

Stack Overflow用户
提问于 2015-07-29 20:04:54
回答 2查看 109关注 0票数 2

我有几个这类文件:

代码语言:javascript
复制
File-1 (vip)-eojUBB_8V_4.mp4
File-2 (vip)-Ek2iyeeL1Vc.mp4
File-3 (vip)-Gh8F6OJa0gU.mp4
File-4 (vip)-SvL_aZt3zyU.mp4

并希望将文件重命名为:

代码语言:javascript
复制
File-1.mp4 
File-2.mp4

名称"File1“和"File2”只是一个例子。实际上,文件有一个不同的名称,但在文件名的末尾有"(vip)-smthing.mp4“。

我写了剧本:

代码语言:javascript
复制
#!/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上编写它。

代码语言:javascript
复制
ls -1 | sed 's/-[^-]\+\././'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-29 21:56:05

答案是:

代码语言:javascript
复制
#!/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/

票数 0
EN

Stack Overflow用户

发布于 2015-07-29 20:13:33

代码语言:javascript
复制
#!/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

输出:

代码语言:javascript
复制
$ 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31710098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档