2

我有一个包含很多文件的目录。我只想保留最新的 6 个。我想我可以查看他们的创建日期并在所有那些太旧的人上运行 rm ,但这样做是更好的方法吗?也许我可以使用一些 linux 命令?

谢谢!

:)

4

2 回答 2

5
rm -v $(ls -t mysvc-*.log | tail -n +7)
  • ls -t, 按时间排序的列表
  • tail -n +7, +7这里表示length-7,所以除了前 7 行
  • $()从封闭的命令输出中创建一个字符串列表
  • rm当然要删除文件
  • 当心名称中带有空格的文件,$()在任何空白处拆分!
于 2013-02-22T08:19:38.073 回答
0

这是我的看法,作为一个脚本。它确实可以处理文件名中的空格,即使它有点小技巧。

#!/bin/bash

eval set -- $(ls -t1  | sed -e 's/.*/"&"/')

if [[ $# -gt 6 ]] ; then
    shift 6
    while [[ $# -gt 0 ]] ; do
        echo "remove this file: $1" # rm "$1"
        shift
    done
fi

ls up there 的第二个选项是每行一个文件名的“一”。不过,实际上似乎并不重要,因为当 ls 不提供 tty 时,这似乎是默认设置。

于 2013-02-22T16:18:02.867 回答