【问题标题】:Removing all directories in a path删除路径中的所有目录
【发布时间】:2014-04-11 12:36:35
【问题描述】:

我有一个生成文件,其中列出了我需要处理的几个目录,例如

DIRS = dir1 dir2 path/to/dir3

all:
    $(foreach DIR,$(DIRS), somecommand --source=$(SOURCEDIR)/$(DIR) --dest=$(DIR);)

clean:
    rm -rf $(DIRS)

目前clean 目标删除了dir1dir2dir3,但我希望它删除dir1dir2path。大致如下:

clean:
    $(foreach DIR,$(DIRS), rm -rf --parents $(DIR);)

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: makefile directory rm


    【解决方案1】:

    rm 没有这样的标志。你可以这样做:

    clean:
            $(foreach DIR,$(DIRS),rm -rf $(firstword $(subst /, ,$(DIR)));)
    

    如果你绝对确定你总是想删除DIRs 中每个路径中第一个目录下的所有内容(对我来说听起来很危险,但是...)

    【讨论】:

    • 只有在我不小心使用绝对路径时才危险。再说一次,这只是一个错字而已,所以总而言之 - 是的,相当危险。
    • 绝对路径不会有问题,因为它的第一个单词将被占用并且不会在您的本地目录中可见。以上仅适用于植根于您当前工作目录的路径。例如,如果您将/usr/bin 添加到DIRS,那么上面的代码将运行rm -rf usr,这将不起作用(大概,除非您碰巧有一个usr 本地子目录)。
    猜你喜欢
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多