Unix “如何拥有”;“保持清洁”;删除时忽略文件夹

Unix “如何拥有”;“保持清洁”;删除时忽略文件夹,unix,makefile,Unix,Makefile,有人给了我一个制作文件来完成一项任务,这项任务给了我一个清晰的定义 指挥部。按照存储库的设置方式,它会删除/bin和/out文件夹中的所有内容,但名为.gitignore的文件除外。这是命令的外观: clean: find out/ ! -name .gitignore -type f -delete && \ find bin/ ! -name .gitignore -type f -delete 现在我正在做我的项目,我需要将内容存储在一个名为/bin/fo

有人给了我一个制作文件来完成一项任务,这项任务给了我一个清晰的定义 指挥部。按照存储库的设置方式,它会删除/bin和/out文件夹中的所有内容,但名为.gitignore的文件除外。这是命令的外观:

clean:
    find out/ ! -name .gitignore -type f -delete && \
    find bin/ ! -name .gitignore -type f -delete
现在我正在做我的项目,我需要将内容存储在一个名为/bin/font和/bin/word\u list的文件夹中。我试图修改命令,使其忽略这两个文件。唯一的问题是,我不知道这些命令是用什么语言编写的,所以我甚至不知道从哪里开始查看语法。谁能给我指一下正确的方向吗?我试过这样的方法:

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/font以及bin/word\u列表


任何帮助都将不胜感激

-name
不检查完整文件路径,它只与文件名匹配(因此
-name freans.ttf
将匹配,但与任何目录中的此文件名匹配)

您正在查找的谓词称为
-path
,但是您需要为整个路径指定一个模式

clean:
    find out/ bin/ ! -name .gitignore ! -path 'bin/fonts/*
 ! -path 'bin/word_lists/*' -type f -delete

(还请注意我是如何压缩
find
以同时遍历两个目录的。我假定您的意思是
bin
而不是
/bin
;也可以参见)

Make recipes是用POSIX shell语法编写的。但是,shell脚本基本上是运行其他程序的一种方式。在这种情况下,正在运行的程序是
find
。因此,您应该在internet(尝试类似于
unix find
)或您的系统(运行
man find
)上查找
find
程序的文档。我个人强烈建议您不要将要保留的内容作为
bin
的子目录。为什么不把它们放在别的地方呢?那会让你的生活简单很多。