这将列出所有文件,但最新的三个除外:
ls -t | tail -n +4
这将删除这些文件:
ls -t | tail -n +4 | xargs rm --
这还将列出点文件:
ls -At | tail -n +4
并使用dotfiles删除:
ls -At | tail -n +4 | xargs rm --
但请注意:ls
文件名包含有趣的字符(例如换行符或空格)时,进行解析可能很危险。如果确定文件名不包含有趣的字符,则解析ls
是非常安全的,如果是一次性脚本,则解析会更加安全。
如果您要开发一个脚本以供重复使用,那么您一定不应该解析其输出ls
并使用此处描述的方法:http : //mywiki.wooledge.org/ParsingLs
@DevilsChild:取决于您是否在乎正确。如果您不在乎,只需通过管道传递给xargs ...但是如果有什么重要的事情(例如备份脚本),则永远不要这样做。
@DevilsChild我从字面上看已经删除了TB的备份,因为缓冲区溢出创建了一个名称为垃圾的文件,并且有人认为,由于文件名的创建是程序性的,因此永远不会发生不寻常的名称。捷径可让您难受。
命令中双破折号的
--
作用是rm
什么?这可以防止文件名以破折号或减号开头。unix.stackexchange.com/questions/1519/…
非常优雅的解决方案:)