如何实现所有没有带星号扩展名的文件?
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 与 wildcard
和 filter-out
:
一起使用
ALL := $(wildcard *)
WITH_EXTENSION := $(wildcard *.*)
WITHOUT_EXTENSION := $(filter-out $(WITH_EXTENSION),$(ALL))
.PHONY: test
test:
@echo $(WITHOUT_EXTENSION)
注意:最好问两个不同的问题。
有什么方法可以使用星号来实现所有没有扩展名的文件吗?我想在 Makefile 或 .gitignore 实现中使用它来删除或忽略所有非扩展文件,例如 README, Makefile 和编译的 C 文件。当我只使用 rm *
格式时,无论扩展名如何,它都会删除所有文件,而我只想控制非扩展名文件。
如果您想在删除时忽略某些文件,那么您可以将它们置于非 !
状态。
请看下面的例子:
如果你想删除除 'README' 文件之外的所有文件,那么你可以使用以下方式使用 find 命令:
find . -type f ! -name 'README' -delete
以上只是一个例子,说明如何忽略某些文件。
我会假设 没有扩展名 的文件名意味着 没有点 。
在 .gitignore
文件中,您可以再次包含(使用 !pattern
)已被先前模式排除的文件。所以:
*
!*.*
应该忽略所有没有扩展名的文件(或目录)。
在 Makefile
中,您可以使用您的 make 版本(您忘记指明)提供的函数或宏。例如,如果您将 GNU make 与 wildcard
和 filter-out
:
ALL := $(wildcard *)
WITH_EXTENSION := $(wildcard *.*)
WITHOUT_EXTENSION := $(filter-out $(WITH_EXTENSION),$(ALL))
.PHONY: test
test:
@echo $(WITHOUT_EXTENSION)
注意:最好问两个不同的问题。