在bash提示符下我可以执行此副本
cp file.txt test1.txt
但如果我尝试将file.txt复制到几个文件中
cp file.txt test{2..4}.txt
我收到错误
cp:target`test4.txt'不是目录
答案 0 :(得分:11)
这不是关于bash,而是关于cp。如果你为cp提供了两个以上的参数,那么最后一个参数应该是一个要复制所有其他参数的目录。
for f in test{2..4}.txt ; do cp file.txt $f ; done
答案 1 :(得分:5)
嗯,你必须了解* 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
命令,这正是Michael写的:如果你给cp
超过2个args,那么最后一个arg必须是一个目录。