在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.
是否可以使用通配符复制这些文件?
答案 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/*/file
或tar
可能会更安全:
cpio