| 您的位置:首页 > 文档 > Shell > |
文章分类热门文章 |
从一个目录中提取文件的问题创建:2005-10-26 00:49:46 作者:Unlinux 来自: http://www.Unlinux.com 请问在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 下通过测试) 转载自:http://www.unlinux.com/doc/shell/20051026/253.html 【评论】 【加入收藏夹】 【大 中 小】 【打印】 【关闭】 ※ 相关链接 无相关信息 |