2013-03-31 125 views
1

所以我試圖複製單個文件(尼古拉斯凱奇的圖片,不要問),以便它替換一個完整的phpBB用戶文件夾頭像(幾乎是四月一號!)。不過,我得到這樣的響應:'當目標不是目錄'時,將單個文件複製到多個目標

[email protected]:~/upload$ for i in "ls *"; do cp ~/cage.jpg $i; done 
cp: target `0e88f82965461cc1b418ddfda60935c8_99.jpg' is not a directory 

我如何才能知道CP,在這種情況下,任何事物都是文件?

謝謝!

+0

你可以請詳細說明它嗎?你要替換的每個文件在〜/ cage.jpg目錄? –

+0

Further reading:[爲什麼你不應該解析ls的輸出](http://mywiki.wooledge.org/ParsingLs) –

回答

2

您使用的語法不正確。以下命令

for i in "ls *" 

使用bash的野生卡擴展,將所述實際串入

for i in "ls file1 file2 dir1 so_on 0e88f82965461cc1b418ddfda60935c8_99.jpg" 

和該字符串值指定給i

接着CP試圖執行

cp ~/cage.jpg ls file1 file2 dir1 so_on 0e88f82965461cc1b418ddfda60935c8_99.jpg 

並且在檢查任何輸入文件是否無效之前,它會檢查目標是否是一個目錄,它不是,因此是錯誤。

要糾正它,改變"ls *"$(ls *),或更好,但只是*以避免不必要的子shell調用

+0

我最終管理它,我用'/ home/joe替換'ls *' /上傳/ *」。這是第一次。 –

相關問題