Shell参数扩展:如何在没有目录部分的情况下获取文件名?

时间:2012-05-07 21:03:06

标签: shell makefile variable-expansion

我正在编写一个makefile,并假设我有以下内容;

FILES = file1.py \
    folder1/file2.py \
    folder2/file3.py

我有以下for循环:

    -@for file in $(FILES); do \
           echo $${file/folder1\/}; \
    done

以上将打印:

file1.py
file2.py
folder2/file3.py

我想要的输出是:

file1.py
file2.py
file3.py

我查看了一些有关shell扩展的文档,但还没有找到解决这个问题的方法。我可以知道如何更改代码以获得正确的输出吗?任何帮助将非常感谢。

编辑:语法

2 个答案:

答案 0 :(得分:5)

你已经接受了@Jens的shell风格答案,但我会建议make-style解决方案:

-@for file in $(notdir $(FILES)); do \
       echo $${file}; \
done

答案 1 :(得分:2)

尝试使用echo $${file##*/}。这将只给出文件名部分,而不包含最后一个斜杠。