当前位置:  技术问答>linux和unix

ls和rm配合使用的问题

    来源: 互联网  发布时间:2017-05-13

    本文导语:  我知道按时间排序,删除最旧的10个文件,可以这么写: ls -tr|tail -10|xargs rm -rf  现在的需求是,当文件数量超过30时,才删除超过30的文件,比如当前文件数量是32时,删除最旧的2个文件,35时删除最旧的5个文件?请大侠帮...


我知道按时间排序,删除最旧的10个文件,可以这么写:
ls -tr|tail -10|xargs rm -rf 

现在的需求是,当文件数量超过30时,才删除超过30的文件,比如当前文件数量是32时,删除最旧的2个文件,35时删除最旧的5个文件?请大侠帮忙,感激不尽...

|
方案一:

ls -tr | sed '1,30d' | rm -rf

方案二:

files=$(ls -tr);i=0;for file in ${files};do i=$((i+=1));if [ ${i} -gt 30 ];then echo ${file};fi ;done | rm -rf

|
方案三:
不包含目录

ls -ltr | sed '/^-/!d' | sed '1,30d' | awk '{print $9}' | xargs rm -rf

|
翻译一下,就是删除一个文件末尾的30行就是:

tac | sed '1,30d' | tac

|
先用ls | wc -l 
算出的是文件加上文件夹的数量
再用你的方法删除

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,