2011-04-07 80 views
2

在bash提示符我可以執行這個複製的cp複製命令

cp file.txt test1.txt

,但如果我嘗試file.txt的複製到多個文件,像這樣

cp file.txt test{2..4}.txt 

我獲取錯誤

cp:target`test4.txt'不是目錄

回答

9

這不是關於bash,而是關於cp。如果你提供兩個以上的參數,最後一個應該是一個目錄,所有其他的目錄都要複製。

for f in test{2..4}.txt ; do cp file.txt $f ; done 
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命令,這也正是邁克爾寫道:如果你給cp超過2 ARGS,最後ARG必須成爲一個目錄。