2012-06-29 134 views
0

我是unix新手(使用Mac OS X终端),并试图通过在文件名中间添加一些文本来重命名某些文件。对于./temp文件夹中的所有文件,我想用dr_ic0004_DMN替换从dr_ic0004开始的文件名。多文件重命名unix

例如 dr_0004_tstat1.txtdr_0004_tstat2.txt分别 dr_0004_DMN_tstat1.txtdr_0004_DMN_tstat2.txt

+0

的[重命名Unix的多个文件]可能重复(http://stackoverflow.com/questions/1086502/rename -multiple-files-in-unix) –

+0

你需要一个for来捕获这个名字,然后你需要用sed或gawk或者其他东西来处理这个名字来创建这个新名字。键入man sed来查找它的语法。 – Spidey

+1

欢迎来到StackOverflow!我们很乐意提供帮助。你有什么尝试? – ghoti

回答

-1

假设您有dr_ic0004foo,dr_ic0004bardr_ic0004baz。看到他们,你会怎么做:

ls dr_ic0004* 

到变量部分(foobarbaz),你可以通过运行列表隔离的sed:

ls dr_ic0004*|sed 's/^dr_ic0004//' 

要重命名一个文件你将使用mv

mv dr_ic0004foo dr_ic0004_DMNfoo 

并遍历一个列表,你可以使用一个for循环:

for x in foo bar baz; do echo $x ; done 

把它们放在一起,你会得到:

for x in `ls dr_ic0004*|sed 's/^dr_ic0004//'`; do mv dr_ic0004$x dr_ic0004_DMN$x; done 
2
for filename in dr_0004* 
do 
    mv "$filename" dr_0004_DMN"${filename#dr_0004}" 
done