这样批量改名的脚本该怎么实现?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
ciclo
帖子: 786
注册时间: 2007-01-25 16:43
来自: 塔尔塔洛斯

这样批量改名的脚本该怎么实现?

#1

帖子 ciclo » 2008-01-02 21:09

想做电子书:
一个文件夹下的文件全部是这样:
001.txt
002.txt
003.txt
...
130.txt
里面的内容开头如下:

001.txt

代码: 全选

史记 
史记卷一 五帝本纪 第一



  *集解凡是徐氏义,称徐姓名以别之。余者悉是骃注解,并集觽家义。索隐纪者,记
也。本其事而记之,故曰本纪。又纪,理也,丝缕有纪。而帝王书称纪者,言为后代纲
...
想把每个文件改名成这样:

代码: 全选

1_卷一五帝本纪第一.txt
这样的脚本大概该怎么写?
谢谢!
我生平瞧不起两种人:
1.那些瞧不起用windows的人的人
2.用windows的人
3.不识数的人

博客:http://blog.chunhao.net
主页:http://chunhao.net
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#2

帖子 eexpress » 2008-01-02 21:29

head -n 2|tail -n 1
bash的超强字符串处理,去掉前面2个字,附加上.txt
tr去掉空格,

剩下mv就是了。
● 鸣学
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#3

帖子 iblicf » 2008-01-02 22:24

也不一定是第二行,脚本处理更好一点 。。

代码: 全选

#!/bin/bash

Target=./tt/

if [ ! -d $Target ] ;then
 mkdir $Target
fi

for i in *.txt
do

f=${i%.*}
t=`awk '/^史记./ { printf("%s%s%s", $1,$2,$3) }' $i`

cp $i $Target$f$t.txt

done
头像
ciclo
帖子: 786
注册时间: 2007-01-25 16:43
来自: 塔尔塔洛斯

#4

帖子 ciclo » 2008-01-03 16:58

多谢楼上二位,
基本搞定
还有个问题,

代码: 全选

史记卷一 五帝本纪 第一 
这里的空格是全角空格,用tr删的话会出现乱码,有没有更好的方法?
我生平瞧不起两种人:
1.那些瞧不起用windows的人的人
2.用windows的人
3.不识数的人

博客:http://blog.chunhao.net
主页:http://chunhao.net
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15

#5

帖子 iblicf » 2008-01-03 17:31

sed -e '1,3 s/ / /g' 1-3 行的全角换半角 ( 你可以copy )
guocb
帖子: 20
注册时间: 2008-01-10 0:02

#6

帖子 guocb » 2008-01-10 0:16

这个还是有一定工作量的
但是技术上面没有什么特殊的
回复