2013-04-03 57 views
0

我想嘗試重命名具有以下文件名的文件:使用Python重命名文件,基於輸入文件

我在具有以下列的文件中有一長列表。這是其在第二列在第一列MD5SUMS和新名稱的輸入文件:

1c59eb1e8d29fecc54d3a0623e6f4c8d Worm:Win32/Allaple.A 
1c569fda69ad93670bf611ff2d16baa6 W32.Rahack.W 
1c6481ebf5c2e86555b88862c0df597b Worm:Win32/Allaple.A 
1c0aa69cbe2b2ed08dc6e73fb2bf1d34 Virus:Win32/Virut.AC 
1c6fdcabb61b5b1d6e53280ae934eaa6 Worm:Win32/Allaple.A 
1c781a8051fcfac49b62cdfba1d7510f Worm:Win32/Allaple.A 

讓我們說;

從原來的文件名以MD5SUM,我想改變

Worm.Allaple.A_1c781a8051fcfac49b62cdfba1d7510f.exe.csv 

Worm:Win32/Allaple.A_1c781a8051fcfac49b62cdfba1d7510f.exe.csv 

如何做到這一點上的Python(我使用bash嘗試過..但我的技能是有限的所以試着看另一種選擇)

+0

你嘗試過什麼? – Blender

+0

我試過Bash。像這樣的東西,我在'cat microsoft-naming.csv | awk {'print $ 2'}';做mv $ i'cat microsoft-naming.csv | awk {'print $ 1'}'-v; done ..但我無法抓住邏輯 – najmi

+0

如果你想要一個bash解決方案,這個問題應該被標記爲bash ..如果你想要一個python解決方案,請用python試試。提示:你可以看看shutil模塊 – Benjamin

回答

-1

你可以用python重命名文件使用shutil

import shutil 

# make sure you are passing the correct directory 
shutil.move(old_file_name, new_file_name) 
+0

謝謝。我也會嘗試用Python。因爲我需要一些「錯誤檢查」錯誤地重命名錯誤的文件名稱.. – najmi

+0

也許..你誤解了這個問題。他/她可能想知道如何找到一個特定的模式並正確地替換它。 –

1

解決了慶典一些幫助

sed -n 's/.*_\(.*\)\.exe\.csv/\1 \0/p' old-name.txt | sort > n1.txt 

sort input-name-file.csv > temp.txt 

join -j1 temp.txt n1.txt > j1.txt 

tr '/' ':' < j1.txt | awk '{printf "mv %s %s_%s.exe.csv\n",$3,$2,$1}'