4

我有一个Makefile如下:

test:
    rm -rf !(.git|folder1|folder2)

运行后make test,文件夹中的所有内容都必须删除,除了.git/,folder1/folder2/.

相反,我收到以下错误:

/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: `rm -rf !(.git|folder1|folder2)'
make: *** [test] Error 2

我该如何解决?

4

1 回答 1

3

只有设置了 shell 选项 ( ) 时,!(...)通配符语法才有效。默认情况下不启用此选项。extglobshopt -s extglob

另一种方法是:

find '(' -name .git -o -name folder1 -o -name folder2 ')' -prune -o -exec rm -rf {} \;
于 2013-04-23T00:22:18.970 回答