首页 > 学技术 > 技术网文 > Linux Shell > 正文

[保留] 删除需要删除的文件,??????????


来源 chinaunix.net 酷勤网整理

一,
我的data文件夹目录中以每天日期为文件夹名存放着数据,
data
 |
  ----20050821
  ----20050822
  ----20050822
正个data文件夹数据有6G大,我想data文件下每50个文件打包压缩,怎么用SHELL解决,

二,
 试想data文件中有几百个文件,
data
 |
 --log 文件
 --feaf
 --464
 --646
如果我想删除feaf,646以外的文件,怎么解决



 carset 回复于:2005-07-24 02:32:31

想了半天第一个问题.
或许可以这样解决.
读文件列表.每50个写进个LOG,然后读LOG来压缩.(顺便可以把这个LOG当做压缩文件的清单:D 自我安慰.. 因为我太菜,解决不了这个问题)
第二个 就直接 find 或者 MV 你要留的文件走.RM 其他文件.MV 回来(如果
你要留的文件很少,或许这个方法速度稍微快点)

ls|grep -vE '^feaf$|^646$'|rm

这个也可以 删除除了 646跟feaf 外所有文件


 Unicorn_angel 回复于:2005-07-25 09:49:37

那位对第一个问题,还有好的解决方法,
 :P


 lych 回复于:2005-07-25 10:36:24

引用:原帖由 "Unicorn_angel" 发表:
那位对第一个问题,还有好的解决方法,
 :P


别的方法倒是有,但是并不见得比上面那个简便!


 ttwking 回复于:2005-07-25 12:08:36

对于第一个问题可用如下代码:
Flag=0
Num=0
Seq=0
ls | while read FileName
do
if [ $Flag -eq 0 ]
then
tar -cf  test${Seq}.tar $FileName
Flag=1
else
  tar -rf test{Seq}.tar $FileName
(( Num+=1 ))
                if [ $Num -eq 50 ]
then
Flag=0
Num=0
(( Seq+=1 ))
fi
fi
done
请多指正。


 carset 回复于:2005-07-25 13:24:59

学习中..


 yaofulin 回复于:2005-07-25 15:41:25

ls|grep -vE '^feaf$|^646$'|rm 

这样可以吗?


 carset 回复于:2005-07-25 16:30:03

引用:原帖由 "yaofulin" 发表:
ls|grep -vE '^feaf$|^646$'|rm 

这样可以吗?



 :P 

这样可以。 grep -v 列出非符合条件 -E 扩展 (是为了用 “|”)




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=582258
转载请注明作者名及原文出处



收藏本页到: