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

王朝other·作者佚名  2008-05-18
宽屏版  字体: |||超大  

请问在unix下怎样用shell实现从一个目录中,依次读取所有的文件。 再把这些文件压缩

成同一个文件。当文件太多时,可以按每1000个文件压缩成一个文件。

我的原意是这样的:例如有5631个文件,我可以压缩成1.Z, 2.Z, 3.Z, 4.Z, 5.Z, 既是

每一千个文件就压缩成一个Z文件。

因为当我想从这些文件找相应的数据时,我用到过grep 命令, 但grep每次只能查找一千

个文件。所以很不方便,而且我的文件有上万个,所以只好把它们都压缩成几个文件了。

我以前也遇到这个问题,比如rm 上万个文件,可能删不掉,需要分批删

未经测试,供参考

------------------------------------------------

#!/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

------------------------------------------------

巧妙的处理方法:

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 下通过测试)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有