我需要一个命令(可能是cp的一个选项)来创建目标目录(如果目标目录不存在)。
例子:
cp -? file /path/to/copy/file/to/is/very/deep/there
我需要一个命令(可能是cp的一个选项)来创建目标目录(如果目标目录不存在)。
例子:
cp -? file /path/to/copy/file/to/is/very/deep/there
当前回答
我也有同样的问题。我的方法是把这些文件压缩成一个存档,就像这样:
tar cf你档案。tar file1 /path/to/file2路径/to/even/deeper/file3
Tar自动将文件存储在归档文件中的适当结构中。如果你跑了
Tar xf your_archive.tar
文件被提取到所需的目录结构中。
其他回答
正如上面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中工作得很好,将两个步骤(创建目录和复制文件)合并为一个步骤。
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 / {} \;
比如说你在做
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
希望有帮助!
Shell函数,做你想要的,称它为“埋葬”副本,因为它为文件挖了一个洞:
bury_copy() { mkdir -p `dirname $2` && cp "$1" "$2"; }
mkdir -p "$d" && cp file "$d"
(cp没有这样的选项)。