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

例子:

cp -? file /path/to/copy/file/to/is/very/deep/there

当前回答

我尊重上面的答案,我更喜欢使用rsync如下所示:

$  rsync -a directory_name /path_where_to_inject_your_directory/

例子:

$ rsync -a test /usr/local/lib/

其他回答

从源复制到不存在的路径

mkdir –p /destination && cp –r /source/ $_

注意:该命令复制所有文件

Cp -r用于复制所有文件夹及其内容

$_ work作为最后一个命令中创建的目标

我尊重上面的答案,我更喜欢使用rsync如下所示:

$  rsync -a directory_name /path_where_to_inject_your_directory/

例子:

$ rsync -a test /usr/local/lib/

这么老的问题,但也许我可以提出另一种解决方案。

您可以使用安装程序复制您的文件,并“在飞行中”创建目标路径。

install -D file /path/to/copy/file/to/is/very/deep/there/file

不过,还是有一些方面需要考虑的:

您还需要指定目标文件名,而不仅仅是目标路径 目标文件将是可执行的(至少,从我的测试来看)

您可以通过添加-m选项来设置目标文件的权限来轻松修改#2(例如:-m 664将创建具有权限rw-rw-r——的目标文件,就像使用touch创建一个新文件一样)。


这里有一个无耻的链接,链接到我受到启发的答案=)

我也有同样的问题。我的方法是把这些文件压缩成一个存档,就像这样:

tar cf你档案。tar file1 /path/to/file2路径/to/even/deeper/file3

Tar自动将文件存储在归档文件中的适当结构中。如果你跑了

Tar xf your_archive.tar

文件被提取到所需的目录结构中。

rsync file /path/to/copy/file/to/is/very/deep/there

如果您有正确的rsync类型,这可能会起作用。