2013-04-03 56 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}'