存档

文章标签 ‘shell’

linux的shell下文件批量改名

2010年1月27日 没有评论

以前写的一个小脚本,用在linux的shell批量修改大量文件名的情况下。昨天不小心删除了大量文件,找回的时候,又一次用到了它,在遇到大批量文件的时候,还是挺有效果的,共享一下。

用法:

1.将你要改名的文件都放在同一个文件夹下,运行”ls -l > oldnames”,然后“vi oldnames”,这时候看到的大概是这个样子:

total 1224
drwxrwxr-x   3 yanpeng yanpeng    4096 Sep 17 16:13 app
drwxrwxr-x   2 yanpeng yanpeng    4096 May 19  2009 bin
drwxrwxr-x   2 yanpeng yanpeng    8192 Jan 26 16:40 docpay

2.输入”ctrl+v”,移动光标,选中要删除的那一堆内容,其实就是文件名前面的那些列,输入“d”,得到的文件大概为

app
bin
docpay

3.删除掉第一行的空行,保存退出vi,然后”cp oldnames newnames”。

4.修改newnames文件中想要改名的文件为新文件名

5.将change_name.sh脚本放在你的那个放置文件的夹下,运行./change_name.sh就可以了(注意有执行权限,加执行权限的方法chmod a+x change_name.sh)

change_name.sh脚本内容,拷贝下,存好就能用了


#!/bin/sh

OLDNAMES='oldnames'
NEWNAMES='newnames'

fileline=`sed -n '$=' $OLDNAMES`
echo $fileline

index=1
while [ $index -le $fileline ]
do
oldname=`sed -n "${index}p" $OLDNAMES`
newname=`sed -n "${index}p" $NEWNAMES`
mv $oldname $newname
index=`expr $index + 1`
done

---------------------------------------------------------------
本站作品根据创作共同协议进行授权, 转载时请务必以超链接形式标明文章原始出处
原文地址:http://www.mirecle.com/2010/01/27/batch-rename-files-in-shell.html
---------------------------------------------------------------

分类: 程序员, 软件 标签: ,