当前位置: 首页 > 面试题库 >

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

刘兴修
2023-03-14
问题内容

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

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

ls -t | head -3

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

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


问题答案:

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

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


 类似资料:
  • 问题内容: 我想 删除所有当前目录下的内容 除了 对文件夹之前,我的新文件复制到分支。 linux的命令是什么? 问题答案: 重置索引很便宜,所以 然后,您可以重置索引(使用)或直接继续签出新分支。

  • 我正在尝试创建一个应该每天运行一次的批处理文件,它应该删除除最新文件之外的所有备份文件,比如说每种类型的2个。所以我有这样的文件: > 备份-每日-2018-11-13_000000.bak 备份-每日-2018-11-12_000000.bak 备份-每日-2018-11-11_000000.bak backup-HOURLY-2018-11-13\u 110000。bak公司 等 目前我的脚本

  • 问题内容: 如何移动除一个以外的所有文件?我正在寻找类似的东西: 我将旧资料移到新资料夹的位置,除了。!符号表示否定。有一些工作工具吗? 问题答案: 将以下内容放入您的.bashrc 它扩展了正则表达式。然后,您可以移动除一个以外的所有文件 与其他命令有关的异常 请注意,在复制目录中,不能以线程中注意到的名称使用正向闪存,为什么除破坏条件外,extglob为何? 所以是否定之前错在这里,我不会,因

  • 有关删除数据的Firebase文档中说: 删除数据 删除数据的最简单方法是对数据位置的引用调用remove()。 还可以通过将null指定为另一个写入操作(如set()或update())的值来删除。您可以将此技术与update()结合使用,在单个API调用中删除多个子项。 有谁能解释一下,我认为最后一行可以帮助我删除firebase文件夹中的所有文件是什么意思?

  • 问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。

  • 我已经创建了一个批处理文件,将文件名中带有xxxx*的文件移动到临时文件夹,然后使用第二个命令forfiles删除原始目录中早于xx天的任何文件,然后使用robocopy/MOVE将所有其他文件移回原始目录。是否有一种方法可以运行forfiles命令从原始控制器中删除所有早于-xx天的文件,但名称中包含xxxx*的文件除外,而无需来回移动文件? 我的原始代码是: