linux cp 目录不存在自动创建,Linux:复制并创建目标目录,如果它不存在

时间:2025-02-27 14:45:32

我需要一个命令(或者可能是cp的一个选项)来创建目标目录(如果它不存在的话)。

示例:

cp -? file /path/to/copy/file/to/is/very/deep/there test -d "$d" || mkdir -p "$d" && cp file "$d"

(cp没有这个选项)。

如果以下两个都是真的:

您正在使用cp的GNU版本(而不是Mac版本)和

您正在复制某些现有的目录结构,您只需要重新创建

即可

那么你可以用cp的- parents标记来做到这一点。从信息页面([ 

/software/coreutils/manual/html_node/#cp-invocation](/software/coreutils/manual/html_node/

#cp-invocation)或使用info cp或man cp):

>

--parents Form the name of each destination file by appending to the target directory a slash and the specified name of the source file. The last argument given to `cp' must be the name of an existing directory. For example, the command: cp --parents a/b/c existing_dir copies the file `a/b/c' to `existing_dir/a/b/c', creating any missing intermediate directories.

示例:

/tmp $ mkdir foo /tmp $ mkdir foo/foo /tmp $ touch foo/foo/ /tmp $ mkdir bar /tmp $ cp --parents foo/foo/ bar /tmp $ ls bar/foo/foo

原文出处:tracholar -> /2018/07/31/linux-copy-and-create-destination-dir-if-it-does-not-exist/