You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Colab中shell执行rm排除文件夹命令报括号语法错误

问题根因

这不是Colab的bug。你使用的!(pattern1|pattern2)通配语法是Bash的extglob(扩展通配符)特性,本地Ubuntu的交互式Shell默认会开启该特性,但Colab中通过!、%%bash、%shell调用的是非交互式Bash进程,默认不会加载extglob配置,因此解析到括号时会直接抛出语法错误。

可行解决方法
  • 方法1:显式开启extglob后执行原命令,和你本地的执行逻辑完全一致
    直接在Colab单元格执行以下命令即可,通过-O extglob参数给Bash手动开启扩展通配符开关:

    !bash -O extglob -c 'rm -r folder/!("folder11"|"folder12"|"folder13")'
    
  • 方法2:使用find命令实现排除删除,不依赖Shell特性,兼容性更强
    该写法不需要调整Bash配置,通过find的原生规则匹配目标文件夹,逻辑更可控:

    !find folder -mindepth 1 -maxdepth 1 -type d \
      ! -name "folder11" \
      ! -name "folder12" \
      ! -name "folder13" \
      -exec rm -r {} +
    

    参数说明:

    • -mindepth 1 -maxdepth 1:仅匹配folder目录下的直接子项,不会递归进入子目录遍历
    • -type d:仅匹配文件夹类型的条目
    • 连续的! -name规则:声明需要排除、不做处理的文件夹名称
    • -exec rm -r {} +:将所有匹配到的条目批量传入删除命令

注意:执行删除操作前,建议先把命令里的rm -r替换成ls执行,预览匹配到的待删除列表,确认匹配规则无误后再执行删除,避免误删重要文件。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:12:28