在bash提示符我可以执行这个复制的cp复制命令
cp file.txt test1.txt
,但如果我尝试file.txt的复制到多个文件,像这样
cp file.txt test{2..4}.txt
我获取错误
cp:target`test4.txt'不是目录
在bash提示符我可以执行这个复制的cp复制命令
cp file.txt test1.txt
,但如果我尝试file.txt的复制到多个文件,像这样
cp file.txt test{2..4}.txt
我获取错误
cp:target`test4.txt'不是目录
这不是关于bash,而是关于cp。如果你提供两个以上的参数,最后一个应该是一个目录,所有其他的目录都要复制。
for f in test{2..4}.txt ; do cp file.txt $f ; done
那么,你必须了解* nix shell是如何工作的。
在DOS/Windows环境中,通配符由程序处理。因此,例如,xcopy *.txt *.bak
,意味着xcopy
被给出2个参数:*.txt
和*.bak
。通配符如何被完全解释取决于xcopy
。
在* nix世界中,通配符由shell处理。例如,类似的命令xcopy *.txt *.bak
首先扩展为xcopy <list of files ending with .txt> <list of files ending with .back>
。因此,假设file1.txt
存在于file4.txt
,再加上另一个文件old.bak
,该命令将扩大到xcopy file1.txt file2.txt file3.txt file4.txt old.bak
对于cp
命令,这也正是迈克尔写道:如果你给cp
超过2 ARGS,最后ARG必须成为一个目录。