免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cfgrpg
打印 上一主题 下一主题

自动删除文件,shell 脚本 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-09 16:44 |只看该作者
嗯,明白, 是在同一个目录。
现在还有个问题:
  1. find . -type f | xargs ls -tr | head -n 1
复制代码
上面这个命令,如果当前文件夹下面有文件夹会出错
xargs: ls: 因信号 13 而终止

论坛徽章:
0
12 [报告]
发表于 2012-05-09 17:17 |只看该作者
本帖最后由 cfgrpg 于 2012-05-09 17:19 编辑

大虾,这个是为什么呢?
回复 8# winway1988


   

论坛徽章:
0
13 [报告]
发表于 2012-05-09 17:36 |只看该作者
这样达到要求,只要删除当前目录下的文件,感谢各位的帮忙!
  1. #!/bin/sh
  2. while ture
  3.         do
  4.                 if [ 300 -gt `df -hm | awk '/sda1/{print $4}'` ]
  5.                         then
  6.                                 ls . -tr|head -n 1|xargs  rm -rf
  7.                                
  8.                                 if [ 300 -lt `df -hm | awk '/sda1/{print $4}'` ]
  9.                                         then
  10.                                                 exit;
  11.                                 fi
  12.                 fi
  13. done
复制代码
回复 10# todayhero


   

论坛徽章:
0
14 [报告]
发表于 2012-05-09 17:39 |只看该作者
  1. find . -maxdepth 1 -type f   | xargs ls -tr | head -n 1 | xargs rm -rf
复制代码
这样你试试,使用-maxdepth 1限制为当前目录。



回复 13# cfgrpg


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
15 [报告]
发表于 2012-05-10 08:34 |只看该作者
没必要两次if-then, 用 if-else-fi 更好。还有如果确认是删文件,rm 后没必要加 -r 参数。
而且这个程序最好对要删的目录做个确认先,否则有可能删错了。
  1. #!/bin/sh
  2. while ture
  3. do
  4.      if [ 300 -gt `df -hm | awk '/sda1/{print $4}'` ]
  5.       then
  6.               ls . -tr|head -n 1|xargs  rm -f
  7.                                 
  8.        else
  9.               exit;
  10.       fi
  11. done
复制代码

论坛徽章:
0
16 [报告]
发表于 2012-05-10 09:46 |只看该作者
呵呵 牛x啊 ,能否再优化下:
1、计算可用空间的时候,把当前可用空间的值记录下来
2、我删除文件的时候算下文件的大小,删除文件后,把此文件的大小加到可用空间的值,
3、判断下当前的可用空间值,如果还是小于300,则继续删除文件,也就是一次循环达到目的。

回复 15# rdcwayx


   

论坛徽章:
0
17 [报告]
发表于 2012-05-10 09:53 |只看该作者
本帖最后由 cfgrpg 于 2012-05-10 09:59 编辑
  1. /mnt/mmc/ipnc/aaaaaaaaaaaaa (8).avi
复制代码
如果找到的文件名字中有转义字符似乎删不掉!

为什么呢?
回复 15# rdcwayx


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
18 [报告]
发表于 2012-05-10 10:57 |只看该作者
条件2,3 已经用 while loop 实现了。循环几次没啥不好。

df -hm  就是用来记录文件系统大小的,这个在删除文件后,会立刻更新。

rm 改成如下命令试试看。
  1. ls . -tr|head -n 1|xargs  -i rm -f "{}"
复制代码

论坛徽章:
0
19 [报告]
发表于 2012-05-10 11:49 |只看该作者
嗯 可用用了,但是机器的xargs 不支持 -i 参数!

回复 18# rdcwayx


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
20 [报告]
发表于 2012-05-10 13:50 |只看该作者
cfgrpg 发表于 2012-05-10 11:49
嗯 可用用了,但是机器的xargs 不支持 -i 参数!

回复 18# rdcwayx
  1. xargs -I{} rm -vf {}
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP