【问题标题】:Always keep n newest files in dir [duplicate]始终在目录中保留 n 个最新文件 [重复]
【发布时间】:2015-02-06 09:01:09
【问题描述】:

我正在尝试创建一个单行,它应该从 dir 中删除多余的文件,以免占用过多的空间。

ls -r --sort=time | head -${{ls | wc -l} - n} | xargs rm -f

n 应该代表我想保留在目录中的文件数。

我在这里做错了,不知道是什么。有人可以帮忙吗?

【问题讨论】:

    标签: bash sorting pipe wc


    【解决方案1】:

    那个${{...}}看起来有点像TCL什么的。它肯定不是有效的 shell 脚本。

    在 Bash 中(但不是在 Bourne shell 中),您可以使用 (( ... )) 进行算术表达式,我猜这就是您想要“-n”做的事情。

    进程替换的语法是$(ls | wc -l),带圆括号。

    合并这两者,你最终可能会得到类似(($(ls | wc -l) - n)) 的东西,但无论如何你真的是should not be parsing ls output。查看此问题的众多重复项之一以获取更好的方法。

    【讨论】:

      【解决方案2】:
      ( ls -t | head -n 25 ; ls ) | sort | uniq -u | sed -e 's,.*,"&",g' | xargs rm
      

      帮我搞定。

      Delete all but the most recent X files in bash

      感谢回复。

      【讨论】:

        猜你喜欢
        • 2018-03-28
        • 1970-01-01
        • 2015-11-16
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        相关资源
        最近更新 更多