【发布时间】:2015-01-02 02:45:39
【问题描述】:
问题:如何删除目录中除最新的3个以外的所有文件?
查找最新的 3 个文件很简单:
ls -t | head -3
但我需要找到除了最新的 3 个文件之外的所有文件。我该怎么做,如何在同一行中删除这些文件而不为此创建不必要的 for 循环?
我为此使用 Debian Wheezy 和 bash 脚本。
【问题讨论】:
-
ls实际上是适合这项工作的错误工具——请参阅mywiki.wooledge.org/ParsingLs。如果你有 GNU find,你可以用一个-printf格式字符串做得更好,它有时间戳(最好是sort -n -z的 UNIX 时间),一个分隔符,然后是一个 NUL;这样即使是带有换行符的文件名也不会把它扔掉。 -
我也不同意在这里使用循环是不必要的。正确而稳健地做事与简洁地做事不同,但其他任何事情都是......嗯......不正确。