Chinaunix首页 | 论坛 | 博客
  • 博客访问: 277981
  • 博文数量: 55
  • 博客积分: 2535
  • 博客等级: 少校
  • 技术积分: 585
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:41
个人简介

Je pense donc je suis.

文章分类

全部博文(55)

文章存档

2014年(11)

2011年(3)

2010年(40)

2009年(1)

我的朋友

分类: LINUX

2010-10-05 17:13:12

################# 按照指定顺序解压多个rar文件 #################
0. 先检查是否安装了unrar相关工具
sudo apt-get install build-essential autoconf automake cvs subversion unrar rar p7zip-full cabextract

1. 为firefox安装Copy Links插件:直接到,输入Copy Links就可以找到

2. 下载多个rar文件,这里以下载阿果的《这一瞬间》专辑为例
   进入该网页后,可以看到共有6个压缩文件
文件下载01
文件下载02
文件下载03
文件下载04
文件下载05
文件下载06
逐 一下载完成后【或者安装了multi links 和downthemall扩展后直接全部下载rar文件】(假设放在~/Aguo/),任意选取其中一个地址,点击鼠标右键,选择Copy Links->Copy All Links,然后进入~/Aguo/,建立order文件,把这些Links粘贴到该文件里面,然后打开该文件,把多余的地址去掉,只保留你下载的6个文 件的地址,再保存。这样得到的order文件就保存了你下载的6个文件的真实解压顺序。

3. 在~/my-shell/里面建立脚本rr,内容如下:
#!/bin/sh
sed -i '/^$/d' order  #删除空行(包括只含回车符的空行),否则可能导致mv出错
ln=`sed -n '$=' order`
for (( i=1; i<=$ln; i++ ))
do
theline=`sed -n "${i}p" order`
fn=`basename "$theline"`
mv $fn ${i}.rar
done
unrar x 1.rar


4. 在~/.bashrc里面指定rr的路径如下
PATH=$HOME/my-shell/:$PATH
export PATH

或者也可以这样写路径
export PATH=$HOME/my-shell:$PATH


5. 进入~/Aguo/,用rr就可以解压了。

6. 如果运行时遇到如下错误
//home/likelinux/my-shell/rr: 4: Syntax error: Bad for loop variable
那么可能的原因是:代码对于标准bash而言没有错,因为debian squeeze为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼。
解决方法是 取消dash
sudo dpkg-reconfigure dash
在选择项中选No,即可。

########### 多个文件批量更名(按照指定方式)#########
实例:
下载了15个文件,完成后发现文件名如下:
5631396b-844b-4925-9bf7-d82e843961c4.mp3
022e2a43-7d6c-4c6b-bb53-781b25cd09a2.mp3
a901f1d4-2fc7-40de-96bc-1bd207406148.mp3
353ad091-5344-48d5-874a-5d4b40a2935d.mp3
4ea68653-c933-4e44-b081-707b9ccd0b84.mp3
6b9a09b7-3d0b-4964-bee8-1e7a75bfa76b.mp3
cb6a9b5c-7eea-4948-9002-3b7bf960d627.mp3
7f8e2fab-bad9-4990-9a9b-29eb0cc96917.mp3
569397b0-f484-4f49-ae97-5717dd6bf6a1.mp3
f7ba7378-9dcb-41f1-8ace-5d4db9ee253a.mp3
5df614b1-2f73-4eab-af96-870cdeb4428f.mp3
89f613dd-72f7-437e-a8ac-f192103d938f.mp3
2d534399-cb56-4e20-b37c-7de23ea144e3.mp3
7f534490-0ea3-44d3-8fe7-d2703233912f.mp3
a55dcd62-fd21-4850-8572-737beb97e39c.mp3
前提:【能够找到文件的目标文件名】,比如:在下载页面还能找到对应的容易识别的文件名,按照顺序排列如下
1.burning 激情燃烧
2.how could i 我怎么能
3.on the road 在路上
4.how could an angel break my hart 天使怎么会伤我的心
5.endless love 无尽的爱
6.christmas in my heart 圣诞在我心
7.desperado 亡命之徒
8.moonlight shadow 月光下的影
9.i knew i loved you 我知道我爱你
10.classic style 雕刻
11.it is only fairy tale 只是童话
12.unbreak my heart 别伤我的心
13.breathless 屏息的爱
14.evertime when i closed eyes 当我闭上双眼
15.it's up to you 这由你决定

下面使用bash命令对15个文件进行更名,比如要把5631396b-844b-4925-9bf7-d82e843961c4.mp3更名为1.burning 激情燃烧.mp3。方法如下
把15个文件的下载地址存为order
cat order
















然后把希望更改后的文件名【目标文件名】存为name
cat name
1.burning 激情燃烧
2.how could i 我怎么能
3.on the road 在路上
4.how could an angel break my hart 天使怎么会伤我的心
5.endless love 无尽的爱
6.christmas in my heart 圣诞在我心
7.desperado 亡命之徒
8.moonlight shadow 月光下的影
9.i knew i loved you 我知道我爱你
10.classic style 雕刻
11.it is only fairy tale 只是童话
12.unbreak my heart 别伤我的心
13.breathless 屏息的爱
14.evertime when i closed eyes 当我闭上双眼
15.it's up to you 这由你决定

然后编写rename脚本,存在~/my-shell,内容如下

#!/bin/bash
#用法:order文件记录的是需要更名的文件原名,而name文件记录的是更改后的文件名(注意,order和name文件里面涉及的文件名的顺序需要彼此一致)
sed -i '/^$/d' order  #删除空行(包括只含回车符的空行),否则可能导致mv出错
sed -i '/^$/d' name  #删除空行(包括只含回车符的空行),否则可能导致mv出错
extname=`sed -n '1p' order | awk '{print substr($0,length-2,3)}'`  #把order文件的第一行的后3个字符(就是扩展名)赋值给extname变量
i=0
while read a
do
    u[i]="${a##*/}"
    ((i++))
donei=0
while read a
do
    mv "${u[i]}" "$a".$extname
    ((i++))
done
然后把my-shell的路径写入到~/.bashrc里面,然后更改rename的属性为777, 最后在终端运行
cd /towherethefileput/
rename

注意:如果是单个下载地址下载的压缩包,解压后可能是形如Trackx.mp3,x=1,2,...,m的格式,那么可以这样来生成order文件
ls *.mp3 >> order
阅读(1722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~