LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 9261|回复: 17

一个自动解压缩rar的脚本[基本解决]

[复制链接]
发表于 2004-3-25 11:54:14 | 显示全部楼层 |阅读模式
我想在用户把需要传完的dvdrip文件夹,移动到unrar目录就实现自动解压缩然后放到over目录,因为本人接触*nix不久,菜鸟一个。麻烦大家帮偶看看:thank

我先说下我的思路
我是用这一行代码来进行的
ls|awk '{print"cd ""\""$1"\"""&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar"}'|sh
用ls列出目录下的文件夹然后用awk添加要执行的命令 如果进入到这个目录就执行eavi这个脚本解压缩然后不管命令是否成功都返回到unrar目录再执行下一个命令

[root@ftp unrar]# ls|awk '{print"cd ""\""$1"\"""&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar"}'
cd "Now.Where.Did.The.Seventh.Company.Get.To.1973.DVDRip.XviD-HFDX"&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar
cd "rime.Suspect.6.The.Last.Witness.2003.DVDRip.XviD-EXiLE"&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar
cd "Welcome.To.Mooseport.DVDSCR.XViD-DVL"&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar

大家看看我的eavi脚本

#!/bin/bash

rar x -y *.rar&&rm -f *.[rR]?? \[* *.[Ss][Ff][Vv]&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
rar x -y *.RAR&&rm -f *.[rR]?? \[* *.[Ss][Ff][Vv]&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
#解压缩根目录下的*.rar文件然后把rar文件和*.sfv文件删除还有[M.C] - ( 706M 50F - COMPLETE ) - [CmFtP]这类文件
rar x -y *01.rar&&rm -f *.[rR]?? \[* *.[Ss][Ff][Vv]&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
rar x -y *01.RAR&&rm -f *.[rR]?? \[* *.[Ss][Ff][Vv]&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
#如果是采用winrar新版本的分卷压缩就压缩就从第一个卷开始解压缩然后删除其他文件
rar x -y -r *.rar&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
rar x -y -r *.RAR&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
rar x -y -r *01.rar&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
rar x -y -r *01.RAR&&ls -l|grep  '^d'|awk '{print $9}'|xargs rm -fr
#如果这个dvdrip有多cd就解压缩到目录下然后删除子目录


请问大家有什么好的办法么?先谢过了
发表于 2004-3-25 12:10:03 | 显示全部楼层
没用过rar,:sorry
发表于 2004-3-28 01:20:51 | 显示全部楼层
干吗不用gzip,bzip2,和tar呢?
Unix下的这些工具还是很好用的!
发表于 2004-3-28 02:22:21 | 显示全部楼层
我下了一个unrar,也是解压缩.rar文件的,挺好使的~~~
发表于 2004-3-28 09:35:20 | 显示全部楼层
没看明白, unrar 可以自动处理volumes吧?
发表于 2004-3-28 10:40:50 | 显示全部楼层
最初由 waker 发表
没看明白, unrar 可以自动处理volumes吧?

你指的是: ?
home/javalee:unrar|grep volume
  v             Create volumes with size autodetection or list all volumes
  vp            Pause before each volume
UNRAR 3.10 freeware      Copyright (c) 1993-2002 Eugene Roshal
发表于 2004-3-28 17:37:22 | 显示全部楼层
没看明白楼主的意思,他好象是要处理分巻,unrar好像是一般情况下不用手工处理的
发表于 2004-3-28 20:08:13 | 显示全部楼层
楼主玩的是一个MovieZ ftp server..大多数的dvdrip放出来的都是rar分卷压缩的。
楼主是想把这些压缩包自动解开并删除,只留下那些*.avi
我也玩过,这里有一个粗浅的脚本。仅供参考。

  1. #!/bin/sh
  2. mv /ftproot/glftpd/site/admin/logs/today.log /ftproot/glftpd/site/admin/logs/yesterday.log
  3. mv /ftproot/glftpd/site/admin/logs/today.error /ftproot/glftpd/site/admin/logs/yesterday.error


  4. find /ftproot/glftpd/site/public/ -name "*part01.rar" -or -name "*.r01"|awk '
  5. BEGIN {FS="/";};
  6. {printf("cd "");}
  7. {for (i=1;i<NF;i++)
  8. printf("%s/",$i);
  9. }
  10. {printf(""");}
  11. {printf("\npwd\n/ftproot/glftpd/bin/unrar e -o- "%s" && rm -rf *.bad *.sfv && ",$NF);}
  12. $NF~/.r01/ {printf("rm -rf "%s".r??",substr($NF,0,length($NF)-4));}
  13. $NF~/.part01.rar/ {printf("rm -rf "%s".part*.r??",substr($NF,0,length($NF)-11));}
  14. $(NF-1)~/[Cc][Dd][0-9]/{printf("&&(mv *.avi *.mpg *.mpeg *.vob *.img *.bin *.cue *.iso ../;rm -rf ../%s;)",$(NF-1));}og
  15. {printf("|| (touch解压失败_请检查文件.bad; echo $PWD 解压失败 >> /ftproot/glftpd/site/admin/logs/today.error)");}
  16. {printf("\n");}
  17. '|sh > /ftproot/glftpd/site/admin/logs/today.log
复制代码
 楼主| 发表于 2004-3-29 15:16:25 | 显示全部楼层
谢谢楼上的朋友给的脚本 :cool:
但是我只要解压缩我的unrar目录就行了
现在遇到的问题是
里面的文件夹的文件都不是统一标准
给大家看一下目录结构
这是个多cd的
  1. [root@ftp Drunken.Monkey.2002.DVDRip.DivX.AC3-KT]# ls
  2. CD1  CD2  @done  Drunken.Monkey.2002.DVDRip.DivX.AC3-KT.nfo  imdb.nfo  Sample  Sub  @太平洋深海
复制代码


1CD的
  1. [root@ftp The.Campaign.2003.DVDRip.XviD-WRD]# ls
  2. [M.C] - ( 698M 49F - COMPLETE ) - [CmFtP]  wrd-tc.r04  wrd-tc.r12  wrd-tc.r20  wrd-tc.r28  wrd-tc.r36  wrd-tc.r44
  3. Sample                                     wrd-tc.r05  wrd-tc.r13  wrd-tc.r21  wrd-tc.r29  wrd-tc.r37  wrd-tc.r45
  4. Subs                                       wrd-tc.r06  wrd-tc.r14  wrd-tc.r22  wrd-tc.r30  wrd-tc.r38  wrd-tc.r46
  5. wrd-tc.nfo                                 wrd-tc.r07  wrd-tc.r15  wrd-tc.r23  wrd-tc.r31  wrd-tc.r39  wrd-tc.r47
  6. wrd-tc.r00                                 wrd-tc.r08  wrd-tc.r16  wrd-tc.r24  wrd-tc.r32  wrd-tc.r40  wrd-tc.rar
  7. wrd-tc.r01                                 wrd-tc.r09  wrd-tc.r17  wrd-tc.r25  wrd-tc.r33  wrd-tc.r41  wrd-tc.sfv
  8. wrd-tc.r02                                 wrd-tc.r10  wrd-tc.r18  wrd-tc.r26  wrd-tc.r34  wrd-tc.r42
  9. wrd-tc.r03                                 wrd-tc.r11  wrd-tc.r19  wrd-tc.r27  wrd-tc.r35  wrd-tc.r43
复制代码

需要解压缩到各自的目录下,现在解压缩好多没有字幕原因是解压缩后直接把字幕文件给del了,因为字幕文件释放出来也是rar的。所以需要进行第2次解压缩然后在删除。我已经想不到办法了 :confused:

另外 还有个问题 请问哪位仁兄知道samba共享可以支持多语言显示
同时能显示繁体和简体就行了。新在只要有繁体的目录就全部是乱码 头痛s了
N多这样的目录 一个个去改非累s不可
 楼主| 发表于 2004-3-30 20:48:12 | 显示全部楼层
我刚刚反复的尝试了一些办法,现在基本解决了问题 现在请大虾们帮偶解决下一个小问题,把这2个脚本合并成一个。:thank

job内容

  1. #!/bin/bash
  2. cd /mcmftp/glftpd/site/XviD/MoviE/unrar
  3. ls -l|grep "^d"|awk '{print"cd """"$NF""""&&eavi;cd /mcmftp/glftpd/site/XviD/MoviE/unrar"}'|sh
复制代码


eavi的内容

  1. #!/bin/bash
  2. #[M.C] FtP ServeR
  3. #Extract Avi Movie Files
  4. #eavi by zBS@[M.C]Studio
  5. rar x -y *.rar;rar x -y *.RAR;rar x -y *01.rar;rar x -y *01.RAR;\
  6. rm -f \[* *.sfv *.r??;rar x -r -y *.rar;rar x -r -y *01.rar;\
  7. find ./ \( -mindepth 2 -name '*.[aijs][vdpsr][ixbt]' -exec mv {} ./ \; \)
  8. ls -l|grep "^d"|awk '{print $NF}'|xargs rm -fr;\
  9. chown -R mysql.users $PWD;\
  10. mv $PWD /mcmftp/glftpd/site/XviD/MoviE/over/
复制代码

先谢谢了 呵呵。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表