我有一个包含大量文件的目录。我想只保留最新的6个。我想我可以看一下他们的创作日期,然后对所有那些年龄太大的人运行rm,但这是一个更好的方法吗?也许我可以使用一些linux命令?
谢谢!
:)
答案 0 :(得分:5)
rm -v $(ls -t mysvc-*.log | tail -n +7)
ls -t
,按时间排序的列表tail -n +7
, +7 这里的意思是 length-7 ,所以除了前7行$()
从附带的命令输出rm
删除文件,当然$()
在任何空格上分割!答案 1 :(得分: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
第二个选项是每行一个文件名为“one”。然而,实际上似乎并不重要,因为当ls没有提供tty时,这似乎是默认值。