本文翻译自:How to have the cp command create any necessary folders for copying a file to a destination [duplicate]

This question already has an answer here: 这个问题在这里已有答案:

  • Linux: copy and create destination dir if it does not exist 19 answers Linux:复制并创建目标目录,如果它不存在 19个答案

When copying a file using cp to a folder that may or may not exist, how do I get cp to create the folder if necessary? 使用cp将文件复制到可能存在或不存在的文件夹时,如何在必要时获取cp来创建文件夹? Here is what I have tried: 这是我尝试过的:

[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

#1楼

参考:https://stackoom.com/question/3yba/如何让cp命令创建任何必要的文件夹以将文件复制到目标-重复


#2楼

也可以使用命令find

find ./ -depth -print | cpio -pvd newdirpathname

#3楼

For those that are on Mac OSX, perhaps the easiest way to work around this is to use ditto (only on the mac, AFAIK, though). 对于那些使用Mac OSX的人来说,解决这个问题的最简单方法可能就是使用ditto (仅限于mac,AFAIK)。 It will create the directory structure that is missing in the destination. 它将创建目标中缺少的目录结构。

For instance, I did this 例如,我这样做了

ditto 6.3.2/6.3.2/macosx/bin/mybinary ~/work/binaries/macosx/6.3.2/

where ~/work did not contain the binaries directory before I ran the command. 在运行命令之前, ~/work没有包含二进制目录。

I thought rsync should work similarly, but it seems it only works for one level of missing directories. 我认为rsync应该工作类似,但它似乎只适用于一个级别的丢失目录。 That is, 那是,

rsync 6.3.3/6.3.3/macosx/bin/mybinary ~/work/binaries/macosx/6.3.3/

worked, because ~/work/binaries/macosx existed but not ~/work/binaries/macosx/6.3.2/ 工作,因为〜/ work / binaries / macosx存在但不是〜/ work / binaries / macosx / 6.3.2 /


#4楼

To expand upon Christian's answer, the only reliable way to do this would be to combine mkdir and cp : 为了扩展Christian的答案,唯一可行的方法是将mkdircp结合起来:

mkdir -p /foo/bar && cp myfile "$_"

As an aside, when you only need to create a single directory in an existing hierarchy, rsync can do it in one operation. 另外,当您只需要在现有层次结构中创建单个目录时, rsync可以在一个操作中执行此操作。 I'm quite a fan of rsync as a much more versatile cp replacement, in fact: 我非常喜欢rsync作为一个更通用的cp替代品,事实上:

rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't.  bar is created.

#5楼

cp -Rvn /source/path/* /destination/path/
cp: /destination/path/any.zip: No such file or directory

It will create no existing paths in destination, if path have a source file inside. 如果路径中包含源文件,它将在目标中不创建现有路径。 This dont create empty directories. 这不会创建空目录。

A moment ago i've seen xxxxxxxx: No such file or directory, because i run out of free space. 刚才我见过xxxxxxxx:没有这样的文件或目录,因为我用完了空闲空间。 without error message. 没有错误消息。

with ditto: 与同上:

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/ works as expected 一旦释放空间cp -Rvn /source/path/* /destination/path/按预期工作


#6楼

rsync is work! rsync是有效的!

#file:
rsync -aqz _vimrc ~/.vimrc#directory:
rsync -aqz _vim/ ~/.vim

如何让cp命令创建任何必要的文件夹以将文件复制到目标[重复]相关推荐

  1. Windows命令行创建文件,文件夹,删除文件,文件夹命令

    创建文件夹命令: md 文件夹名字或者mkdir 文件夹名字 删除文件夹命令: rd删除空文件夹,rd  /s /q 删除有子文件夹和子文件的文件夹 创建文件命令: type nul >*.* ...

  2. (方案汇总)批处理中畸形文件夹和畸形文件的创建、访问、删除

    [方案一]以点结尾的文件夹 复制内容到剪贴板 代码: rem 创建以点结尾的文件夹 md "C:\test" md "C:\test\batcher..\" 复 ...

  3. mac系统命令行如何创建文件夹 如何移动文件

    大部分时候我们直接用鼠标拖一拖就可以实现了.. 但是有些时候迫不得已确实需要命令行来进行这些操作 创建文件夹: mkdir abc 即可在当前目录下创建文件夹abc 移动文件 例如,若要将文件从 Do ...

  4. u盘复制文件第二台计算机无文件夹,电脑上的文件不能复制到U盘,U盘不能创建文件夹及删除文件...

    电脑上的文件不能复制到U盘,U盘不能创建文件夹及删除文件 计算机基础知识    知识宝库    2013-8-3    6606    0评论 最好查一下电脑被设置的什么保护,该怎样解开 你确认一下, ...

  5. linux如何用终端删除文件夹,linux删除文件夹命令

    在Linux系统中没有回收站,因此我们要删除文件夹的时候需要注意,下面由学习啦小编为大家整理了linux删除文件夹命令,希望对大家有帮助! linux删除文件夹命令详解 一.rm命令使用权限 所有用户 ...

  6. linux里创建文件夹、创建文件夹子文件夹、删除文件夹和文件、访问指定目录级返回上一级目录

    1.新建文件夹 2.删除文件 3.访问目录 一.新建文件夹 mkdir 命令是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用. 1.mkdir xxx:创建文件夹 ...

  7. c语言mkdir创建文件夹失败,cenos mkdir 无法创建文件夹,即便文件权限为777

    Java--如何创建文件夹及文件,删除文件,文件夹 package com.zz; import java.io.File; import java.io.IOException; /** * Jav ...

  8. C++ 创建文件夹和删除文件夹

    1.DOS命令方式 string save_as = "C:\\xxx\\xxx";//创建文件夹 string command; command = "mkdir &q ...

  9. ubuntu创建文件夹和删除文件

    创建 名为docker的文件夹 : ubuntu创建文件夹mkdir name mkdir docker 删除 名为docker的文件夹 : ubuntu删除文件rm name rm docker

最新文章

  1. 网站优化两大方面谁都不能忽视!
  2. 9个用于构建容错系统的开源工具
  3. python文本时间提取
  4. JDK10的新特性:var泛型和多个接口实现
  5. xampp浏览php出现乱码,dvwa+xampp搭建显示乱码的问题及解决方案
  6. IDA 7.0 如何使用 IDAGolangHelper插件
  7. 全局替换安卓应用字体
  8. Leetcode 254.因子的组合
  9. 存储系统的实现-探析存储的机制和原理
  10. CentOS下安装jdk11
  11. Google ExoPlayer播放器框架详解及应用实践
  12. 201671030111 词频统计软件项目报告
  13. C++ std::string 不可初始化为NULL及基本用法
  14. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
  15. 年终奖变期权,曝字节跳动将开启员工期权兑换
  16. 配置EF Core的DbContext
  17. supervisord启动子程序报错Exited too quickly (process log may have details)解决
  18. 阿汤哥的四条领导力经验
  19. 区块链:从底层技术时代走向产品时代的跃进
  20. Day5 快速输入数据的方法

热门文章

  1. @font-face引入自定义字体 兼容IE
  2. js数据取整,取余,保留小数,数据脱敏等的一些处理方式
  3. 递归算法与两个经典问题:汉诺塔问题和八皇后问题
  4. C#之程序调试方法总结
  5. 小程序定位、店面选择功能
  6. 安利phpEnv,用于本地开发测试的网站搭建环境集成神器
  7. 如何入坑新媒体运营,有哪些工具可以用?
  8. Visor Finance 攻击分析
  9. 前端页面的序号顺序排列index
  10. 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 Casper PoS共识机制的变种...