2011-11-25 68 views
5

我正在嘗試製作一個腳本,用於從目錄複製文件並將複製的文件放入新目錄中。如何組合shell命令

我知道cp命令將複製這些文件,並且mkdir命令將創建該目錄,但有誰知道如何將這兩個命令組合成一行?

到目前爲止,我有

mkdir /root/newdir/ cp /root/*.doc /root/newdir 

此提供錯誤消息

mkdir: cannot create directory 'cp': Files exists 
mkdir: cannot create directory '/root/files/wp.doc: File exists 
mkdir: cannot create directory 'mkdir' : File exists 
mkdir: cannot create directory '/root/files/new dir: file exists 

但是它並創建目錄newdir

回答

8
mkdir -p /root/newdir/ && cp /root/*.doc /root/newdir/ 

這將調用mkdir創建目錄結構,檢查命令執行是否成功並調用0如果是的話,命令。兩個命令

+0

這個工作,非常感謝儘管它拿出錯誤消息... CP:忽略目錄「的mkdir」 – user1065861

+0

@ user1065861 :'cp'默認不復制目錄。如果你想這樣做,你必須指定'-p'選項。檢查你的'/ root'目錄的內容 - 很可能你在使用這些命令時已經在那裏創建了非目的目錄。 – 2011-11-25 15:17:25

+0

錯誤...'-r'選項,對不起。 – 2011-11-25 15:23:41

2
mkdir /root/newdir/; cp /root/*.doc /root/newdir 
0

將分號這是因爲你不知道確切位置在哪裏的命令結束的外殼。在這種情況下:

mkdir /root/newdir/ cp /root/*.doc /root/newdir 

你的命令cp會作爲參數傳遞給mkdir命令外殼試圖使名爲cp文件。所有其他情況都會發生。

通過命令後面的;。它告訴shell命令已經結束,下一個字是另一個命令。

換行符(Return key)也被視爲命令分派者。所以如果你把每個命令放在下一行,它也可以正常工作。 所以,你可以嘗試以下任一:

mkdir /root/newdir/ ; cp /root/*.doc /root/newdir 

OR

mkdir /root/newdir/ 

cp /root/*.doc /root/newdir 
0

之間

+0

好的解釋,但是對於我更喜歡​​''&&'](http://stackoverflow.com/a/8271018/667820)'解決方案,因爲前者處理'mkdir'失敗的可能性。 –