分页: 1 / 1

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

发表于 : 2010-05-14 10:04
dddworld
请各位大虾帮忙:
由于刚使用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文件夹下压缩文件的数量用什么命令呢?

这里我先谢谢了。

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

发表于 : 2010-05-14 13:40
maniux
去装个atool。
这个是套perl脚本,应该能满足你要求。

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

发表于 : 2010-05-14 13:42
trigger
tar xf自己创建目录

代码: 全选

find . -name "*.gz" -exec ls {} \;|while read line ;do tar xf $line ;done

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

发表于 : 2010-05-14 18:39
dddworld
trigger 写了:tar xf自己创建目录

代码: 全选

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

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

发表于 : 2010-05-14 20:21
trigger

代码: 全选

 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

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

发表于 : 2010-05-14 23:05
maniux
dddworld 写了:
trigger 写了:tar xf自己创建目录

代码: 全选

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

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

发表于 : 2010-05-20 17:54
trigger

代码: 全选

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

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

发表于 : 2010-05-20 18:21
adam8157
我的签名中script中extract....