在 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
to file4.txt
,再加上另一个文件old.bak
,命令将扩展为xcopy file1.txt file2.txt file3.txt file4.txt old.bak
对于cp
命令,这正是 Michael 所写的:如果您提供cp
超过 2 个 args,最后一个 arg 必须是一个目录。