当使用cp将一个文件复制到一个可能存在或可能不存在的文件夹时,如果需要,我如何让cp创建文件夹?以下是我的尝试:
[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
当使用cp将一个文件复制到一个可能存在或可能不存在的文件夹时,如果需要,我如何让cp创建文件夹?以下是我的尝试:
[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
当前回答
为了扩展Christian的答案,唯一可靠的方法是将mkdir和cp结合起来:
mkdir -p /foo/bar && cp myfile "$_"
顺便说一句,当您只需要在现有的层次结构中创建一个目录时,rsync可以在一个操作中完成。我是rsync的忠实粉丝,它是一个更通用的cp替代品,事实上:
rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't. bar is created.
其他回答
为了扩展Christian的答案,唯一可靠的方法是将mkdir和cp结合起来:
mkdir -p /foo/bar && cp myfile "$_"
顺便说一句,当您只需要在现有的层次结构中创建一个目录时,rsync可以在一个操作中完成。我是rsync的忠实粉丝,它是一个更通用的cp替代品,事实上:
rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't. bar is created.
我不知道你用cp也能做到。
你可以用mkdir ..
mkdir -p /var/path/to/your/dir
编辑 参见lhunath关于合并cp的答案。
你也可以使用find命令:
find ./ -depth -print | cpio -pvd newdirpathname
mkdir -p `dirname /nosuchdirectory/hi.txt` && cp -r urls-resume /nosuchdirectory/hi.txt
cp -Rvn /source/path/* /destination/path/
cp: /destination/path/any.zip: No such file or directory
如果路径中有源文件,它将不会在目标中创建现有路径。 这不会创建空目录。
刚才我看到了xxxxxxxx:没有这样的文件或目录,因为我的空闲空间用完了。没有错误信息。
同上:
ditto -V /source/path/* /destination/path
ditto: /destination/path/any.zip: No space left on device
once freed space cp -Rvn /source/path/* /destination/path/按预期工作