Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1325858
  • 博文数量: 268
  • 博客积分: 10698
  • 博客等级: 上将
  • 技术积分: 2867
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-14 22:21
文章分类

全部博文(268)

文章存档

2012年(19)

2011年(13)

2010年(29)

2009年(26)

2008年(99)

2007年(82)

我的朋友

分类:

2007-09-07 21:45:26

下面只谈四种情况,每一种情况都要注意用双引号保护文件名中可能出现的空格。
一、用两个文件名列表a(旧)和b(新),每个文件占一行,两表中的行一一对应
脚本1,用sed:
#!/bin/bash
i=1
j=`sed -n '$=' a`
while (($i<=j))
do
  mv "`sed -n "$i"p a`" "`sed -n "$i"p b`" 
  let i+=1
done

脚本2,用文件描述符fd:
#!/bin/bash
while read -u3 filea && read -u4 fileb
do
  mv "$filea" "$fileb"  
done 3
二、改扩展名,比如,把当前目录下扩展名为.txt的改成.doc:
# for f in *.txt ; do mv "$f" "${f/txt/doc}" ; done
用util-linux软件包里的rename可以达到同样的目的。

三、加扩展名,比如,都加一个.old:
# ls | xargs -t -i mv {} {}.old

四、删除文件名中的乱码:
下面是一些头部带有乱码,尾部带有规则数字的文件名:
[]??????_????????_026.mp3  []??????_????????_039.mp3
[]??????_????????_027.mp3  []??????_????????_040.mp3
[]??????_????????_028.mp3  []??????_????????_041.mp3
[]??????_????????_029.mp3  []??????_????????_042.mp3
[]??????_????????_030.mp3  []??????_????????_043.mp3
[]??????_????????_031.mp3  []??????_????????_044.mp3
[]??????_????????_032.mp3  []??????_????????_045.mp3
[]??????_????????_033.mp3  []??????_????????_046.mp3
[]??????_????????_034.mp3  []??????_????????_047.mp3
[]??????_????????_035.mp3  []??????_????????_048.mp3
[]??????_????????_036.mp3  []??????_????????_049.mp3
[]??????_????????_037.mp3  []??????_????????_050.mp3
[]??????_????????_038.mp3

删除这种乱码的方法是在bash里面用##与变量头部进行最大匹配,并删除匹配:
# for f in *.mp3  ; do mv "$f" "${f##*_}" ; done
效果如下:
# ls *mp3
026.mp3  030.mp3  034.mp3  038.mp3  042.mp3  046.mp3  050.mp3
027.mp3  031.mp3  035.mp3  039.mp3  043.mp3  047.mp3
028.mp3  032.mp3  036.mp3  040.mp3  044.mp3  048.mp3
029.mp3  033.mp3  037.mp3  041.mp3  045.mp3  049.mp3

阅读(2832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~