我有一个包含很多文件的目录。我只想保留最新的 6 个。我想我可以查看他们的创建日期并在所有那些太旧的人上运行 rm ,但这样做是更好的方法吗?也许我可以使用一些 linux 命令?
谢谢!
:)
我有一个包含很多文件的目录。我只想保留最新的 6 个。我想我可以查看他们的创建日期并在所有那些太旧的人上运行 rm ,但这样做是更好的方法吗?也许我可以使用一些 linux 命令?
谢谢!
:)
rm -v $(ls -t mysvc-*.log | tail -n +7)
ls -t
, 按时间排序的列表tail -n +7
, +7这里表示length-7,所以除了前 7 行$()
从封闭的命令输出中创建一个字符串列表rm
当然要删除文件$()
在任何空白处拆分!这是我的看法,作为一个脚本。它确实可以处理文件名中的空格,即使它有点小技巧。
#!/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 时,这似乎是默认设置。