如何实现所有没有带星号扩展名的文件?

How to implement all files which have no extension with asterisk?

有什么方法可以使用星号来实现所有没有扩展名的文件吗?我想在 Makefile.gitignore 实现中使用它来删除或忽略所有非扩展文件,例如 README, Makefile 和编译的 C 文件。当我只使用 rm * 格式时,无论扩展名如何,它都会删除所有文件,而我只想控制非扩展名文件。

如果您想在删除时忽略某些文件,那么您可以将它们置于非 ! 状态。
请看下面的例子:
如果你想删除除 'README' 文件之外的所有文件,那么你可以使用以下方式使用 find 命令:

find . -type f ! -name 'README' -delete

以上只是一个例子,说明如何忽略某些文件。

我会假设 没有扩展名 的文件名意味着 没有点

.gitignore 文件中,您可以再次包含(使用 !pattern)已被先前模式排除的文件。所以:

*
!*.*

应该忽略所有没有扩展名的文件(或目录)。

Makefile 中,您可以使用您的 make 版本(您忘记指明)提供的函数或宏。例如,如果您将 GNU make 与 wildcardfilter-out:

一起使用
ALL := $(wildcard *)
WITH_EXTENSION := $(wildcard *.*)
WITHOUT_EXTENSION := $(filter-out $(WITH_EXTENSION),$(ALL))

.PHONY: test
test:
    @echo $(WITHOUT_EXTENSION)

注意:最好问两个不同的问题。