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

例子:

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

当前回答

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

其他回答

比如说你在做

cp file1.txt A/B/C/D/文件txt

其中A/B/C/D是还不存在的目录

一个可能的解决方案如下

DIR=$(dirname A/B/C/D/file.txt)
# DIR= "A/B/C/D"
mkdir -p $DIR
cp file1.txt A/B/C/D/file.txt

希望有帮助!

简单地没有创建脚本和简单的命令…

mkdir -p /destination-folder/ && cp file-name /destination-folder/

正如上面help_asap和sponge所建议的,你可以使用'install'命令将文件复制到现有目录中,或者如果目标目录不存在,则创建新的目标目录。

选项1 安装-D filename some/deep/directory/filename 将文件复制到新的或现有目录,并赋予文件名默认的755权限

选项2 安装-D filename -m640 some/deep/directory/filename 按照选项1,但给文件名640权限。

选项3 安装-D filename -m640 -t some/deep/directory/ 根据选项2,但目标文件名到目标目录,所以文件名不需要写在源和目标。

选项4 install -D filena* -m640 -t some/deep/directory/ 与选项3相同,但对多个文件使用通配符。

它在Ubuntu中工作得很好,将两个步骤(创建目录和复制文件)合并为一个步骤。

仅适用于macOS

rsync -R <source file path> destination_folder

对于macOS -父母cp选项不工作

mkdir -p "$d" && cp file "$d"

(cp没有这样的选项)。