2017-09-13 47 views
-1

我有一个包含巴纽以下列方式命名的图片的文件夹:视频生成与随机名称PNG框架 - Linux的

name_number.png 

但是数量写在科学的方式(1,1E1,1E2) 。

我想创建一个视频,从命令行,这是他们所有的组合。

有没有Linux的命令考虑到学名?我应该使用命令重命名它们,然后生成视频吗?

+1

你需要给出比你在这里更好的例子,比如编辑你的问题并显示你拥有的所有不同品种的文件名的例子。什么产生这些名字?他们想要什么格式? – tadman

+0

如果当你做'ls -1'时,文件以正确的顺序出现,就像它们在你的示例数据中那样,那么就没有什么可做的。我们可能需要查看更多包含您的科学编号的示例,以帮助每个tadman的评论。祝你好运。 – shellter

+0

@tadman这个名字对所有人都是一样的。唯一的区别是名字。 – GVa

回答

1

使用Ruby可以解决这样说:

def rename_sci(name) 
    name.sub(/(\d+e\d+)/) do |m| 
    '%.0f' % $1.to_f 
    end 
end 

%w[ 
    test_1e1.png 
    test_1e2.png 
].each do |name| 
    puts '%s -> %s' % [ 
    name, 
    rename_sci(name) 
    ] 
end 

你在哪里得到的输出,如:

test_1e1.png -> test_10.png 
test_1e2.png -> test_100.png 

现在你可以很容易的实际重命名工具:

require 'optparse' 

def rename_sci(name) 
    name.sub(/([0-9]+e[0-9]+)/) do |m| 
    '%.0f' % $1.to_f 
    end 
end 

options = { 
    dry_run: false 
} 

# Use OptionParser to add --dry-run option for testing 
program = OptionParser.new do |op| 
    op.on('-y', '--dry-run', 'Dry run, no renaming actually occurs') do 
    options[:dry_run] = true 
    end 
end 

program.parse!(ARGV).each do |path| 
    new_path = rename_sci(path) 

    next if (path == new_path) 

    puts '%s -> %s' % [ path, new_path ] 

    next if (options[:dry_run]) 

    File.rename(path, new_path) 
end 

然后你可以运行这个脚本,如:

rename_sci -y *.png 

如果一切看起来不错,拉动-y标志,让它撕裂!与往常一样,备份以防万一出现可怕的错误。