我正在尝试编写一个需要目录的脚本,将其所有文件复制到我创建的新目录中。所以脚本有两个参数。第一个是现有的目录,第二个是创建的目录。创建和复制目录
这是我到目前为止有:
dir1=$1
dir2=$2
mkdir $2
cp $1/. $2
然而,我的新目录总是空的。这是一个语法错误?
我正在尝试编写一个需要目录的脚本,将其所有文件复制到我创建的新目录中。所以脚本有两个参数。第一个是现有的目录,第二个是创建的目录。创建和复制目录
这是我到目前为止有:
dir1=$1
dir2=$2
mkdir $2
cp $1/. $2
然而,我的新目录总是空的。这是一个语法错误?
cp -r $1/. $2
是否需要添加递归?
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)
,你实际上是告诉它复制目录(.
链接到它所在的目录,所以cd ././././././././
在同一目录中循环)。
你可以这样做:
cp $1/* $2
将所有文件从 “$ 1” “$ 2” 的复制,但不是子目录
cp $1/. -r $2
的所有文件和子目录递归地复制,也治疗像普通文件那样的特殊文件(即,如果它找到一个管道,它从管道中读取并写入常规文件)。
cp $1/. -R $2
复制所有文件和子目录递归,并保留特殊文件
cp $1/. -a $2
复制一切,还保持联系,组权限和特殊文件。
希望这有助于=)
好答案 – VAR121
不,究竟是什么标志-r? – Unknown
你正在告诉它递归复制。把dir1的内容复制到dir2 – ProfessionalAmateur
啊我明白了,我会用它,谢谢你的帮助。 – Unknown