IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在 macOS zsh 下删除 .tgz 文件外的所有文件和文件夹

    血衫非弧の一存发表于 2024-08-19 00:00:00
    love 0

    在日常运维工作中,我们经常需要清理目录中的文件或文件夹,这次我只想保留 .tgz 文件,而删除其他所有的内容。

    在 macOS 默认的 zsh 环境中,这个操作和 bash有一些不同的实现方式。

    步骤

    1. 启用 zsh 的扩展通配符功能

    zsh 提供了一些强大的通配符功能,但需要先启用它们。可以通过以下命令启用扩展的通配符匹配:

    setopt extended_glob
    

    2. 使用 rm 命令删除文件和文件夹

    rm -rf -- ^*.tgz
    

    3. 命令详解

    • setopt extended_glob:启用 zsh 的扩展通配符,使我们可以使用更强大的匹配模式。
    • ^*.tgz:^ 用于取反匹配,表示排除所有 .tgz 文件之外的其他文件和文件夹。
    • rm -rf:递归删除所有匹配的文件和文件夹。
    • --:标志命令选项的结束,避免路径被解释为选项。

    4. 注意事项

    1. 操作慎重:rm -rf 命令非常危险,执行时请务必确认路径和匹配模式正确无误,避免误删重要文件。

    2. 适用范围:上述方法适用于 zsh 环境。

    备选方案

    如果我们不想启用 zsh 的扩展通配符,或者希望在 bash 和 zsh 环境下都能通用,可以使用 find 命令:

    find /path/to/app -mindepth 1 ! -name "*.tgz" -exec rm -rf {} +
    

    这种方式可以更加灵活地在各种 shell 中使用,特别是在复杂的目录结构中。



沪ICP备19023445号-2号
友情链接