当前位置: 首页 > Linux

Linux提示:cp命令自动创建不存在的目录,只复制修改过的文件

时间:2023-04-06 04:37:07 Linux

复制时自动创建不存在的子目录在Linux中,可以使用cp命令的--path选项指定不存在的子目录复制存在的子目录时自动创建。例如执行如下命令:$cp--pathjava/com/server/Service.javatarget/如果目标目录下不存在子目录java/com/server/,cp--path命令会自动创建java/com/server/这串子目录,然后把文件复制到对应的子目录下。注意:上述命令中,复制的目标目录必须存在。cp--path命令只会自动创建包含在源文件路径中的子目录,而不是给定的目标目录。在行为方面,cp--pathjava/com/server/Service.javatarget/命令类似于以下命令:$mkdir-ptarget/java/com/server/$cpjava/com/server/Service.javatarget/java/com/server/mkdir-p命令的意思是递归创建一系列的子目录。--parents选项参见mancp的说明,其中没有提到--path选项,但其实可以使用这个选项。它应该过时了。使用该选项复制出错时,提示的选项名称为--parents,应替换为--parents选项:$cp--pathjava/com/server/Service.javanot_exist/cp:with--父母,目标必须是目录尝试“cp--help”以获取更多信息。可以看出cp--path命令复制出错,提示信息说使用--parents时,目标文件名必须是已有目录。可以看出--path被当做--parents对待。查看GNUcp的在线帮助链接https://www.gnu.org/software/...,--parents选项解释如下:--parents通过在目标目录后面追加a来形成每个目标文件的名称斜杠和源文件的指定名称。给cp的最后一个参数必须是现有目录的名称。例如,命令:cp--parentsa/b/cexisting_dirc将文件a/b/c复制到existing_dir/a/b/c,创建任何缺失的中间目录。即当复制的源文件路径中包含子目录名时,--parent选项会自动创建目标目录中不存在的子目录。目标目录本身必须已经存在。由于在cp命令的帮助信息中已经找不到--path选项的说明,所以建议不要使用该选项,改用--parents选项。只复制新修改或不存在的文件在Linux中,有时会遇到这样的问题场景:使用cp命令复制一个大目录(目录下有很多子目录或文件),但是复制到一半时,遇到异常,导致复制停止并且需要新的复制。这时候你不想复制已经复制的文件,只复制没有复制的文件。然后你可以使用cp命令的-u选项。请参阅mancp的-u选项,如下所示:-u,--updatecopy仅当SOURCE文件比目标文件更新或目标文件丢失时。即只有源文件比目标文件新,或者目标文件不存在,cp-u命令才会复制文件。