Makefile:从文件读取时使用cp命令

时间:2019-01-06 14:52:41

标签: linux makefile wildcard cp

在makefile中,我正在做类似的事情-

@while read -r file; do \
    if [ ! -z "$$file" ]; then \
        cp -R path/to/someplace/$$file path/to/someplace/else/$$file \
        fi \
done <filename.txt

filename.txt包含文件和文件夹,例如-

abc/*.txt
folder1/
folder2/
textfile.txt

我能够复制文件和文件夹,但是在abc/*.txt的情况下显示错误:

cp: target `/path/to/someplace/else/*.txt' is not a directory.

是否可以使用通配符复制这些文件?

1 个答案:

答案 0 :(得分:0)

实际上,问题不在于模式扩展。该位似乎可以正常工作。该错误实际上是由于生成的'POST'命令引起的。您最终得到了例如:

cp

但是,对于多个源文件cp abc/a.txt abc/b.txt other/path/abc/*.txt ,期望目标位置是目录,而cp不是(可能是您创建的目录,但不太可能是您想要的)。

说。例如,您可以通过调用other/place/abc/*(使mkdir -p other/path/`dirname $$file`进行转义)来创建目标目录,并与$一起使用cp作为目标。

需要注意的地方很少。例如,如果要遇到绝对路径,或者在连接到文件本身的目录(`dirname $$file`dir?/*.txt)上使用大体字符。例如,使用some/*/filetar可能会更安全:

cpio