我正在尝试编写一个带有目录的脚本,将其所有文件复制到我创建的新目录中。所以脚本有两个参数。第一个是现有目录,第二个是创建目录。
这是我到目前为止所做的:
dir1=$1
dir2=$2
mkdir $2
cp $1/. $2
然而我的新目录总是空的。这是语法错误吗?
答案 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)