温馨提示:本文翻译自stackoverflow.com,查看原文请点击:linux - Delete all files except the newest 3 in bash script
bash linux ls purge

linux - 删除除bash脚本中最新的3个文件外的所有文件

发布于 2020-03-27 16:10:40

问题:如何删除目录中除最新3个文件以外的所有文件?

查找最新的3个文件很简单:

ls -t | head -3

但是我需要找到除最新的3个文件之外的所有文件。我该怎么做,以及如何在同一行中删除这些文件而不造成不必要的for循环?

我为此使用Debian Wheezy和bash脚本。

查看更多

查看更多

提问者
bytecode77
被浏览
159
lesmana 2017-04-26 16:41

这将列出所有文件,但最新的三个除外:

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