【问题标题】:How can I delete every file but one extension [duplicate]如何删除除一个扩展名之外的所有文件[重复]
【发布时间】:2014-06-08 17:06:36
【问题描述】:

我有一个包含一些文件扩展名的文件夹,我想删除除 html 扩展名之外的所有文件。谁能帮帮我?

【问题讨论】:

  • @jmetz:这个问题的解决方案不太好接受。
  • @anubhava:这个问题仍然是重复的,答案包含到目前为止这里给出的所有答案。投票由用户决定。

标签: regex linux bash delete-file rm


【解决方案1】:

你可以使用这个查找命令:

find /your/path -maxdepth 1 -type f ! -name '*.html' -delete

【讨论】:

  • "*.html" 也不是。
  • 我相信 find 命令使用单引号或双引号都没关系,但我还是编辑了。
  • 可能希望将自己限制在带有-type f 的文件中。此外,这样的否定匹配对于find 可能是危险的,因为. 已匹配!
  • 感谢@gniourf_gniourf,已修复。
  • -a 没用 :D
【解决方案2】:

使用bash 的 extglob 功能。要启用它,如果它尚未开启:

shopt -s extglob

然后你可以简单地否定 glob:

rm !(*.html)

【讨论】:

猜你喜欢
  • 2015-07-22
  • 2014-07-25
  • 1970-01-01
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
相关资源
最近更新 更多