2012-10-11 88 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