首页 > 解决方案 > 为什么我不能使用 git rm 删除除特定文件类型之外的所有文件?

问题描述

我想删除当前目录及其子目录中不属于文件类型的所有文件*.scss

但是,我不断收到错误消息:

$ git rm -r !(*.scss)
#=> zsh: number expected

这样做的正确方法是什么?为什么命令失败?

标签: gitzsh

解决方案


!是 shell 的特殊字符,它操纵命令历史记录,因此您需要使用反斜杠或引号对其进行筛选。你还需要冒号。尝试ls-files一下,比如

git ls-files \* ':!*.scss'

然后删除文件

git rm \* ':!*.scss'

另请注意,git rm -r递归删除目录很有可能删除*.scss其中的文件。


推荐阅读