ChinaUnix.net
 >> ChinaUnix.net > Shell

从一个目录中提取文件的问题

作者:candy18     发表时间:2002/12/31 11:00pm

请问在unix下怎样用shell实现从一个目录中,依次读取所有的文件。再把这些文件压缩成同一个文件。当文件太多时,可以按每1000个文件压缩成一个文件。

此文章相关评论:
该文章有16个相关评论如下:(点这儿可以发表评论)
nkliyong 发表于: 2003/01/01 01:11am
用tar 吧.
 
candy18 发表于: 2003/01/01 09:21am
具体用法如何?可以详细点吗?
 
发表于: 2003/01/01 09:35am
$ tar cf 压缩文件名.tar 目录名
 
candy18 发表于: 2003/01/01 01:12pm
这好像是把整个目录压缩啊。
我的原意是这样的:例如有5631个文件,我可以压缩成1.Z, 2.Z, 3.Z, 4.Z, 5.Z
既是每一千个文件就压缩成一个Z文件。
 
nkliyong 发表于: 2003/01/01 04:29pm
为什么需要这样做?
 
candy18 发表于: 2003/01/01 07:28pm
因为当我想从这些文件找相应的数据时,我用到过grep 命令,但grep每次只能查找一千个文件。所以很不方便,而且我的文件有上万个,所以只好把它们都压缩成几个文件了。
各位帮帮忙吧。
 
nkliyong 发表于: 2003/01/01 10:00pm
我以前也遇到这个问题,比如rm 上万个文件,可能删不掉,需要粉皮删
需要考虑考虑
 
laoxia 发表于: 2003/01/02 03:45am
未经测试,供参考
------------------------------------------------
#!/bin/ksh
COUNT=0
RUN=0
ls > filelist.tmp
while read file
do
 echo $file >> 1000file.tmp
 COUNT=` expr $COUNT + 1`
   if [ `expr $COUNT % 1000` -eq 0 ]
     while read single_file
       do
        mv  $single_file ./tardir/
       done <<  1000file.tmp
       RUN=`expr $RUN +1`
       tar -cvf /archive.$RUN  ./tardir
       rm -r ./tardir/*
       rm 1000file.tmp
   fi
done < filelist.tmp
rm filelist.tmp
------------------------------------------------
~
 
candy18 发表于: 2003/01/04 00:14am
我试试看,兄弟们辛苦了
 
红袖添香 发表于: 2003/01/04 10:19am
[这个贴子最后由红袖添香在 2003/01/04 10:30am 编辑]


这个问题其实可以更简单地处理。


ls > /tmp/filelist
split -l1000 -a3 /tmp/filelist /tmp/splitlist
for i in /tmp/splitlist* ; do
   tar cvf -  -I $i | compress > $i.tar.Z  && rm $i
done

(Solaris8 下通过测试)

 
valentine 发表于: 2003/01/05 11:27am
[quote][b]下面引用由[u]红袖添香[/u]在 [i]2003/01/04 10:19am[/i] 发表的内容:[/b]
这个问题其实可以更简单地处理。
ls > /tmp/filelist
split -l1000 -a3 /tmp/filelist /tmp/splitlist
for i in /tmp/splitlist* ; do
...
[/quote]
处理巧妙啊。
如此红袖,何必添香啊。hehe
 
biansj 发表于: 2003/01/05 02:32pm
红香真牛X,高!
 
nkliyong 发表于: 2003/01/05 02:58pm
不错,想法很巧妙
 
红袖添香 发表于: 2003/01/05 04:51pm
[quote][b]下面引用由[u]valentine[/u]在 [i]2003/01/05 11:27am[/i] 发表的内容:[/b]
处理巧妙啊。
如此红袖,何必添香啊。hehe
[/quote]

谢谢斑竹夸奖,不好意思,还得多向您偷点艺,呵呵。

还有其它各位前辈……   :)

 
laoxia 发表于: 2003/01/05 11:43pm
即生渝儿何生亮
即生老虾何生香

俺心里泛酸的很啦,不过要SAVE 下来

 
红袖添香 发表于: 2003/01/06 02:28am

不敢不敢,晚辈其实很逊,还得多向前辈们学习。 :)
 
 

Copyright © ChinaUnix.net  *  转载请注明出处及作者