求自动建立文件夹并解压缩的脚本

sh/bash/dash/ksh/zsh等Shell脚本
回复
dddworld
帖子: 2
注册时间: 2009-10-15 10:01

求自动建立文件夹并解压缩的脚本

#1

帖子 dddworld » 2010-05-14 10:04

请各位大虾帮忙:
由于刚使用ubuntu,工作中经常需要解压缩,且每个压缩文档都解压缩到各自的目录,很是繁琐。请大虾来帮忙,解脱我繁琐的工作。
具体要求:比如文件夹unp下有4个压缩文件de601.tar.gz; af601.tar.gz; wr601.tar.gz; qs601.tar.gz
运行脚本可以在unp下建立4个文件夹:de601; af601; wr601; qs601; 然后把4个压缩文件分别解压缩到对应的文件下。
需要解决的问题:自动检测unp文件夹下压缩文件的数量,并提取文件名字,建立对应的文件夹,再解压缩。

我尝试了basename 命令,可以提取压缩文件的名字,
basename /nup/de601.tar.gz .tar.gz
这样得到文件名de601,但是我不知道怎么用这个文件名建立一个文件夹。

检测unp文件夹下压缩文件的数量用什么命令呢?

这里我先谢谢了。
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: 求自动建立文件夹并解压缩的脚本

#2

帖子 maniux » 2010-05-14 13:40

去装个atool。
这个是套perl脚本,应该能满足你要求。
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 求自动建立文件夹并解压缩的脚本

#3

帖子 trigger » 2010-05-14 13:42

tar xf自己创建目录

代码: 全选

find . -name "*.gz" -exec ls {} \;|while read line ;do tar xf $line ;done
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
dddworld
帖子: 2
注册时间: 2009-10-15 10:01

Re: 求自动建立文件夹并解压缩的脚本

#4

帖子 dddworld » 2010-05-14 18:39

trigger 写了:tar xf自己创建目录

代码: 全选

find . -name "*.gz" -exec ls {} \;|while read line ;do tar xf $line ;done
多谢3楼,
我把以上的命令行,输入到一个脚本;在find有添加了文件目录(该目录下有2个压缩文件),可以执行,但是结果不对。1个文件被解压缩了。而且没有建立对应的目录。
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 求自动建立文件夹并解压缩的脚本

#5

帖子 trigger » 2010-05-14 20:21

代码: 全选

 find . -name "*.gz" -exec ls {} \;|while read line ;do name=`basename "$line" .tar.gz` && mkdir "$name" && tar xf "$name".tar.gz -C "$name";done
我测试了一下,能执行

代码: 全选

$ ls -1 && find . -name "*.gz" -exec ls {} \;|while read line ;do name=`basename "$line" .tar.gz` && mkdir "$name" && tar xf "$name".tar.gz -C "$name";done && echo "--------------" && ls -1
01-Apocalife.mp3.tar.gz
02-CaressessinDarkness.mp3.tar.gz
03-HauntingDamnation.mp3.tar.gz
--------------
01-Apocalife.mp3 #其实这是个文件架
01-Apocalife.mp3.tar.gz
02-CaressessinDarkness.mp3 #其实这是个文件架
02-CaressessinDarkness.mp3.tar.gz
03-HauntingDamnation.mp3 #其实这是个文件架
03-HauntingDamnation.mp3.tar.gz
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
maniux
帖子: 179
注册时间: 2009-01-30 23:08

Re: 求自动建立文件夹并解压缩的脚本

#6

帖子 maniux » 2010-05-14 23:05

dddworld 写了:
trigger 写了:tar xf自己创建目录

代码: 全选

find . -name "*.gz" -exec ls {} \;|while read line ;do tar xf $line ;done
多谢3楼,
我把以上的命令行,输入到一个脚本;在find有添加了文件目录(该目录下有2个压缩文件),可以执行,但是结果不对。1个文件被解压缩了。而且没有建立对应的目录。
唉,真搞不懂你们,为啥有现成的软件不用,非要重复劳动……结果还没人家弄的好。就算不用软件,类似的脚本也一堆,论坛里搜下就有。 :em20
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 求自动建立文件夹并解压缩的脚本

#7

帖子 trigger » 2010-05-20 17:54

代码: 全选

find . -name "*.gz" -exec ls {} \;|while read line ;do name=`basename "$line" .tar.gz` && mkdir "$name" && tar xf "$name".tar.gz -C "$name";done
找到.gz结尾的文件,ls出来,传递给while循环,一行一行执行,由于使用的shell解释器是bash,文件名前都有“./”,所以用basename截掉./和.tar.gz。用这个处理后的name作为目录名创建,然后把.tar.gz文件解压到里面
:em20
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

Re: 求自动建立文件夹并解压缩的脚本

#8

帖子 adam8157 » 2010-05-20 18:21

我的签名中script中extract....
回复