【发布时间】:2021-05-24 06:13:57
【问题描述】:
我得到了一个 Makefile 的任务,它给了我一个 make clean 命令。通过设置存储库的方式,它会删除 /bin 和 /out 文件夹中的所有内容,但名为 .gitignore 的文件除外。这是命令的样子:
clean:
find out/ ! -name .gitignore -type f -delete && \
find bin/ ! -name .gitignore -type f -delete
现在我正在做我的项目,我需要将内容存储在一个名为 /bin/fonts 和 /bin/word_lists 的文件夹中。我正在尝试修改命令以使其忽略这两个文件。唯一的问题是,我不知道这些命令是用什么语言编写的,所以我什至不知道从哪里开始查看语法。有人能指出我正确的方向吗?我尝试过这样的事情:
clean:
find out/ ! -name .gitignore -type f -delete && \
find bin/ ! -name .gitignore ! -name fonts/FreeSans.ttf -type f -delete
但它仍然会删除字体中的所有内容,即使它确实按照我想要的方式工作,也不能真正解决将每个字体保存在文件夹中的问题。
我也试过这个:
clean:
find out/ ! -name .gitignore -type f -delete && \
find ./bin -mindepth 1 ! -name .gitignore ! -regex '^./fonts/\(/.*\)?' ! -regex '^./word_lists/\(/.*\)?' -delete
在这篇文章之后,它反而删除了所有内容,包括文件夹 bin/fonts 以及 bin/word_lists。
任何帮助将不胜感激!
【问题讨论】:
-
制作食谱是用 POSIX shell 语法编写的。但是,shell 脚本从根本上说是运行其他程序的一种方式。在这种情况下,正在运行的程序是
find。因此,您应该在互联网上(尝试类似unix find)或在您的系统上(运行man find)查找find程序的文档。 -
我个人强烈建议您NOT将您想要保留的内容放在
bin的子目录中。为什么不把它们放在别的地方呢?这会让你的生活变得更简单。