【发布时间】:2019-04-02 09:25:12
【问题描述】:
在 GNU Makefile(在 Ubuntu Linux 系统上)中,如何删除列表中每个文件名的文件名后缀,以使文件名在第一个点处被截断?
假设我有
NAMES = file1.a.b.c file2.x.y.z file3.b file4.foo
名称可能来自使用$(wildcard file*) 的文件名通配扩展。
我想结束
NEWNAMES = file1 file2 file3 file4
甚至可能
NEWNAMES = file1.quux file2.quux file3.quux file4.quux
(不一定是这个顺序)
$(basename ...) 函数仅去除名称中的 last 后缀。
在支持数组的 shell 中,我会使用 "${names[@]%%.*}" 或 "${names[@]/%.*/.quux}" 之类的东西。
想要这样做的原因是我们正在使用一个生物信息学环境,其中文件具有已知的文件名前缀,但它们的后缀可以是.fa、.fas、.fasta 等的任意组合。 ),这些后缀可能会加倍(如.fa.fa),并且最后还有一个文件压缩器后缀,例如.gz。
我们希望在 Makefile 中将文件名转换为规范化的prefix.suffix 文件名,无论初始文件名后缀有多复杂。
【问题讨论】: