在bash提示符下,我可以执行以下复制操作
cp file.txt test1.txt
但是如果我尝试将file.txt复制到多个文件中,就像这样
cp file.txt test{2..4}.txt
我遇到了错误。
cp: 目标文件 `test4.txt' 不是一个目录
在bash提示符下,我可以执行以下复制操作
cp file.txt test1.txt
但是如果我尝试将file.txt复制到多个文件中,就像这样
cp file.txt test{2..4}.txt
cp: 目标文件 `test4.txt' 不是一个目录
不是关于bash,而是关于cp命令。如果你向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
命令,正如Michael所写的那样:如果您给cp
超过2个参数,则最后一个参数必须是目录。