2012-10-11 136 views
1

我正在嘗試編寫一個需要目錄的腳本,將其所有文件複製到我創建的新目錄中。所以腳本有兩個參數。第一個是現有的目錄,第二個是創建的目錄。創建和複製目錄

這是我到目前爲止有:

dir1=$1 
dir2=$2 

mkdir $2 
cp $1/. $2 

然而,我的新目錄總是空的。這是一個語法錯誤?

回答

1
cp -r $1/. $2 

是否需要添加遞歸?

+0

不,究竟是什麼標誌-r? – Unknown

+0

你正在告訴它遞歸複製。把dir1的內容複製到dir2 – ProfessionalAmateur

+0

啊我明白了,我會用它,謝謝你的幫助。 – Unknown

0

cp $1/. $2我認爲你需要使用通配符代替點 cp $1/* $2

另一種方式是,如果你告訴它複製.使用遞歸複製

cp -r $1/* $2 # copy the whole directory into the second one recursively (e.i. including subdirectories) 
cp -ar $1/* $2 # this will keep the sym links intact (not trying to replace them with the file they point) 
1

,你實際上是告訴它複製目錄(.鏈接到它所在的目錄,所以cd ././././././././在同一目錄中循環)。

你可以這樣做:

cp $1/* $2 

將所有文件從 「$ 1」 「$ 2」 的複製,但不是子目錄

cp $1/. -r $2 

的所有文件和子目錄遞歸地複製,也治療像普通文件那樣的特殊文件(即,如果它找到一個管道,它從管道中讀取並寫入常規文件)。

cp $1/. -R $2 

複製所有文件和子目錄遞歸,並保留特殊文件

cp $1/. -a $2 

複製一切,還保持聯繫,組權限和特殊文件。

希望這有助於=)

+0

好答案 – VAR121