Chinaunix

标题: shell控制目录下的子目录个数 [打印本页]

作者: prcardin    时间: 2014-06-20 15:29
标题: shell控制目录下的子目录个数
shell控制目录下的子目录个数

/data/temp 目录下的目录个数的控制,如果超过这个数值,比如控制目录下的子目录在30个,删除创建创建时间最久远的目录~~~
作者: todayhero    时间: 2014-06-20 16:10
@prcardin

我做的实验假设目录是/tmp/temp
  1. dir_count=`find /tmp/temp/ -maxdepth 1 -type d | wc -l`
  2. del_dir_count=$((${dir_count}-31))

  3. if [ ${dir_count} -gt 31 ];then
  4.         ls -hlt | awk '$0~/^d/{print $NF}' | tail -${del_dir_count} | xargs rm -rf
  5. fi
复制代码

作者: prcardin    时间: 2014-06-20 16:12
if判断那个模块做的很好,谢谢哈
目测是可以的

回复 2# todayhero


   
作者: 用户名注册后不能更改    时间: 2014-06-20 16:14
until [ "CU" = "chinaunix" ]
do
    until [ `ls -F /data/temp | grep -c '/$'` -gt 30 ]
    do
        sleep x
    done
    rm xxx
done

额,创建时间最久远不知道怎么判断。
作者: 用户名注册后不能更改    时间: 2014-06-20 16:16
回复 2# todayhero

厉害,ls我还是没用熟练,很多参数都不知道。
作者: prcardin    时间: 2014-06-20 16:18
文件创建时间的比较。倒数第30个以前的都删除
回复 4# 用户名注册后不能更改


   
作者: 关阴月飞    时间: 2014-06-20 16:19
本帖最后由 关阴月飞 于 2014-06-20 16:26 编辑

回复 1# prcardin


    不考虑子目录中的子目录,另外创建时间是没有保存的,这里用ls 的-t参数排序:
  1. ls /data/temp/*/ -dt |awk 'NR>30' |xargs -i rm  -rf /data/temp/{}/  
复制代码

作者: prcardin    时间: 2014-06-20 16:21
PF大婶,好简单的说。ls的参数真多     awk里的NR这用的新颖

回复 7# 关阴月飞


   
作者: 用户名注册后不能更改    时间: 2014-06-20 16:52
回复 8# prcardin

我一直觉得,越是基础的命令,越应该研究深入,因为日常中用到的机会最大。

但是……
等世界杯之后再说吧。
等XXX之后再说吧。
等……

结果我还是不会ls。
作者: prcardin    时间: 2014-06-20 16:55
ls /data/temp/*/ -dt |awk 'NR>30' |xargs -i rm  -rf /data/temp/{}/
-i加上去后,不能删除。去掉-i才能删除。pf大婶,怎么破

回复 7# 关阴月飞


   
作者: prcardin    时间: 2014-06-20 16:56
是的,像这种基础的命令,就卡主了。问题有时没那么难

回复 9# 用户名注册后不能更改


   
作者: 关阴月飞    时间: 2014-06-20 17:02
本帖最后由 关阴月飞 于 2014-06-20 17:02 编辑

回复 10# prcardin


    你是在逗我么? -i 不行? -I 行不行? 也不行,那就别加了
作者: prcardin    时间: 2014-06-20 18:13
-i实测不行
-I 没测试
后面就都没加  
回复 12# 关阴月飞


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2