创建和复制目录

时间:2012-10-11 17:28:13

标签: bash

我正在尝试编写一个带有目录的脚本,将其所有文件复制到我创建的新目录中。所以脚本有两个参数。第一个是现有目录,第二个是创建目录。

这是我到目前为止所做的:

dir1=$1
dir2=$2

mkdir $2
cp $1/. $2

然而我的新目录总是空的。这是语法错误吗?

3 个答案:

答案 0 :(得分:1)

cp -r $1/. $2

您是否需要添加递归。

答案 1 :(得分:1)

如果你告诉它复制.,你实际上是在告诉它复制目录(.链接到它所在的目录,所以cd ././././././././在同一目录上循环)

您可以这样做:

cp $1/* $2

将所有文件从“$ 1”复制到“$ 2”,但不是子目录

cp $1/. -r $2

以递归方式复制所有文件和子目录,并且还处理特殊文件(如常规文件)(即,如果找到管道,则从管道读取并写入常规文件)。

cp $1/. -R $2

以递归方式复制所有文件和子目录,并保留特殊文件

cp $1/. -a $2

复制所有内容,并保留链接,组权限和特殊文件。

希望这有助于=)

答案 2 :(得分: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)