gpt4 book ai didi

filenames - GNU 制造商 : Remove all parts of filename after first dot

转载 作者:行者123 更新时间:2023-12-02 20:02:36 25 4
gpt4 key购买 nike

在 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 文件名,无论初始文件名后缀有多复杂。

最佳答案

如果您想在不使用 shell 的情况下使用 make 函数来完成此操作,您可以使用如下内容:

NAMES := $(foreach F,$(wildcard file*),$(firstword $(subst ., ,$F)))

关于filenames - GNU 制造商 : Remove all parts of filename after first dot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55471228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com