2015-02-10 24 views
0

我想在其名稱中的數字文件夾中的所有文件重命名,像在linux重命名多個文件與數字加上一個常數

  • Solution_01.vtu
  • Solution_02.vtu
  • Solution_03。 VTU ...

  • Solution_201.vtu
  • Solution_202.vtu
  • Solution_203.vtu ...

其中可以指定附加的常數(此處200)。

我試着沿該線的東西提出在Renaming a set of files to 001, 002, ... on Linux

i=200; temp=$(mktemp -p .); for file in solution_*.vtu 
do 
mv "$file" $temp; 
mv $temp $(printf "solution_%0.3d.vtu" $i) 
i = $((i+1)) 
done 

但這並不爲我工作。謝謝你的幫助!

+1

分享一些代碼你在這一點上試過了,並解釋你被卡住的原因,因爲我們不會爲你完成整個腳本 – 2015-02-10 10:39:04

回答

0

你可以用這個命令試試:

find . -printf 'mv %f %f\n' | grep -v '\. \.' | sed 's/u Solution_/u Solution_2/g' | while read -r i ; do $i ; done 
+0

謝謝你你的回答,但這不是我所期望的,因爲這只是額外的2。如果我有Solution_200.vtu Solution_201.vtu,我將得到Solution_2200.vtu Solution_2201.vtu,而不是Solution_400.vtu,Solution_401.vtu,這是我真正需要的。 – Littlemouse 2015-02-10 11:58:47

0

如果你有你的Linux機器上的紅寶石:

#! /usr/bin/env ruby 

require 'fileutils' 

pattern = ARGV[0] || "*.vtu" 
offset = (ARGV[1] || 200).to_i 

Dir[pattern].each do |file| 
    id = file[/\d+/] 
    if id then 
    new_id = id.to_i + offset 
    new_file = file.sub(/\d+/, new_id.to_s) 
    puts "#{file} -> #{new_file}" 
    ## UNCOMMENT THIS LINE IF YOU WANT TO MOVE FILES: 
    # FileUtils.mv file, new_file 
    end 
end 

您可以使用它像這樣:

./rename_with_integer_offset.rb "*.vtu" 200 
# solution_201.vtu -> solution_401.vtu 
# solution_202.vtu -> solution_402.vtu