当前位置: 技术问答>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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。