Chinaunix

标题: 解压文件到各自所在的目录 [打印本页]

作者: xiexiexielei    时间: 2013-04-18 19:48
标题: 解压文件到各自所在的目录
本帖最后由 xiexiexielei 于 2013-04-18 19:49 编辑

各位大侠,菜鸟求助求助。
有好多的文件夹,每个文件夹中都有好多个压缩文件,我想把解压缩文件到各自所在的目录下,这个应该怎么解决。坐等。谢谢谢谢^_^
作者: cao627    时间: 2013-04-18 20:22
如果所有的压缩文件都是一种压缩格式 比如gzp,都有扩展名: .gz
找到包含这些文件的最上层目录比如:/test
  1. find /test/ -name '*.gz' -exec gzip -d {} \;
复制代码

作者: xiexiexielei    时间: 2013-04-18 22:44
本帖最后由 xiexiexielei 于 2013-04-18 23:05 编辑

回复 2# cao627
如果文件数太多的话,用-exec不太好吧。我用xargs写的,我写的你帮我看看吧。find /test/ '*.zip' | xargs -i unzip {} -d ()  ,后边小括号内应该写各自的所在的文件夹名称的,但是我不会写。求指教。。呵呵。

   
作者: 心若寒江雪    时间: 2013-04-19 01:59
量不大就写个shell吧
作者: xiexiexielei    时间: 2013-04-19 14:43
回复 4# 心若寒江雪


  惭愧啊,shell不会写脚本。几乎没有基础。
作者: cao627    时间: 2013-04-19 16:23
@xiexiexielei
  1. find /test/ -name '*.zip' | xargs -i dirname {} | xargs -i  unzip {}/*.zip  -d {}
复制代码

作者: xiexiexielei    时间: 2013-04-19 16:34
本帖最后由 xiexiexielei 于 2013-04-19 16:35 编辑

回复 6# cao627

谢谢谢谢了啊 。这样可以呢。终于解决了萦绕心头的一个疙瘩啊。非常感谢。具体各个语句是什么意思怎么实现的,我自己先试着看看吧。不会了再向你请教。

   
作者: Shell_HAT    时间: 2013-04-19 16:49
本帖最后由 Shell_HAT 于 2013-04-19 18:43 编辑

回复 5# xiexiexielei
  1. for file in `find /test/ -name '*.zip'`; do
  2.     DIR=`dirname "$file"`
  3.     #unzip "$DIR/*.zip" -d "$DIR"
  4.     unzip "$file" -d "$DIR"
  5. done
复制代码

作者: cao627    时间: 2013-04-19 16:57
@Shell_HAT我怎么觉得有点问题,同一目录下的两个文件,要执行两次*zip没必要吧?
作者: 心若寒江雪    时间: 2013-04-19 18:24
for file in `find /test/ -name '*.zip'`; do

    DIR=`dirname "$file"`

    unzip "$DIR/$file" -d "$DIR"

done


作者: cao627    时间: 2013-04-19 18:30
@心若寒江雪
for file in `find /test/ -name '*.zip'`; do

    DIR=`dirname "$file"`

    unzip "$DIR/$file" -d "$DIR"  

done

作者: Shell_HAT    时间: 2013-04-19 18:43
回复 9# cao627


    是的,已更改。
作者: cao627    时间: 2013-04-19 18:51
不知道同一目录下有很多.zip文件时 设(文件数为n) 有没有必要
find /test/ -name '*.zip' | xargs -i dirname {} | sort | uniq
然后再做unzip    *.zip ,避免多做做 (n-1) 次 无意义的  unzip    *.zip

但sort和uniq又耗费资源。

作者: xiexiexielei    时间: 2013-04-20 21:31
cao627 发表于 2013-04-19 18:30
@心若寒江雪
for file in `find /test/ -name '*.zip'`; do

@Shell_HAT  
这个find的时候已经包含路径了,所以红色的部分$dir/(unzip那一句)应该不用加了吧。
谢谢各位大神,学习了。哈哈。
作者: xiexiexielei    时间: 2013-04-20 22:03
回复 11# cao627

@
    @Shell_HAT  
这个find的时候已经包含路径了,所以红色的部分$dir/(unzip那一句)应该不用加了吧。
谢谢各位大神,学习了。哈哈。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2