我需要一个命令(可能是cp的一个选项)来创建目标目录(如果目标目录不存在)。
例子:
cp -? file /path/to/copy/file/to/is/very/deep/there
我需要一个命令(可能是cp的一个选项)来创建目标目录(如果目标目录不存在)。
例子:
cp -? file /path/to/copy/file/to/is/very/deep/there
当前回答
简单地没有创建脚本和简单的命令…
mkdir -p /destination-folder/ && cp file-name /destination-folder/
其他回答
只是恢复和给出一个完整的工作解决方案,在一行。 如果您想要重命名文件,请注意,您应该包括一种方法来提供到mkdir的干净dir路径。$fdst可以是file或dir。 下一段代码在任何情况下都可以工作。
fsrc=/tmp/myfile.unk
fdst=/tmp/dir1/dir2/dir3/myfile.txt
mkdir -p $(dirname ${fdst}) && cp -p ${fsrc} ${fdst}
或者特定于bash
fsrc=/tmp/myfile.unk
fdst=/tmp/dir1/dir2/dir3/myfile.txt
mkdir -p ${fdst%/*} && cp -p ${fsrc} ${fdst}
Oneliner创建一个小脚本,可以用作子命令,在find例如:
组+ H;Echo -e "#!/bin/sh\nmkdir -p \$(dirname \"\$2\");Cp \"$ 1\" \"$2\"\;"> ~ /地方/ bin / cpmkdir;Chmod +x ~/local/bin/cpmkdir . sh
然后你可以这样使用它:
查找name files_you_re_lookin_for。* -exec cpmkdir {} ./ extracted_copy / {} \;
简单地没有创建脚本和简单的命令…
mkdir -p /destination-folder/ && cp file-name /destination-folder/
rsync file /path/to/copy/file/to/is/very/deep/there
如果您有正确的rsync类型,这可能会起作用。
这么老的问题,但也许我可以提出另一种解决方案。
您可以使用安装程序复制您的文件,并“在飞行中”创建目标路径。
install -D file /path/to/copy/file/to/is/very/deep/there/file
不过,还是有一些方面需要考虑的:
您还需要指定目标文件名,而不仅仅是目标路径 目标文件将是可执行的(至少,从我的测试来看)
您可以通过添加-m选项来设置目标文件的权限来轻松修改#2(例如:-m 664将创建具有权限rw-rw-r——的目标文件,就像使用touch创建一个新文件一样)。
这里有一个无耻的链接,链接到我受到启发的答案=)