如何列出匹配某种模式的所有未跟踪的git文件(并删除它们)?

时间:2018-04-11 23:18:50

标签: bash git

在一个Django项目中,我运行了一个python manage.py compilescss命令,它生成了一堆未跟踪的CSS文件:

enter image description here

我想用一个命令删除以*css结尾的所有未跟踪文件。从Git: list only "untracked" files (also, custom commands)开始,到目前为止,我发现列出所有未跟踪文件的命令是

git ls-files --others --exclude-standard

但是,虽然似乎有一个-x(或--exclude)选项可以排除与某个模式匹配的文件,但是我没有可以通过的--include选项*css {{ 1}}。

是否有一种通用的Bash方法可以将这些结果过滤到CSS文件然后批量删除它们?

2 个答案:

答案 0 :(得分:1)

我设法通过将结果传递给grep(使用正则表达式参数)和xargs rm来实现此目的:

git ls-files --others --exclude-standard | grep -E "\.css$" | xargs rm

运行此命令后,已删除未跟踪的CSS文件:

enter image description here

答案 1 :(得分:1)

git clean是一个非常有用的命令来摆脱生成的文件。如果Git已经忽略了这些文件,请添加-x标志以包含被忽略的文件。通常,CSS文件包含在项目的一个非常特定的子树中,您可以运行git clean -x path/to/Django/root/*/static

--dry-run标记列出了要删除的文件,--force实际上删除了它们。