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


我需要一个命令(或者可能是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标记来做到这一点。从信息页面([ http://www.gnu.org
/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation](http://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html

#cp-invocation)或使用info cpman 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/foo.txt
/tmp $ mkdir bar
/tmp $ cp --parents foo/foo/foo.txt bar
/tmp $ ls bar/foo/foo
foo.txt

未经作者同意,本文严禁转载,违者必究!