2017-09-13 48 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標誌,讓它撕裂!與往常一樣,備份以防萬一出現可怕的錯誤。