首页 > 解决方案 > 如何使用 cp 命令复制文件/文件夹?

问题描述

我有一个文件夹,cs-template其结构如下:

cs-template
  |_
    public
     |_
       assets
        |_
          img
           |_
             example.png
     |_
       robots.txt

  |_
    src
     |_
       components
        |_
          Accessibility
           |_
             Accessibility.js
     |_
       routes
        |_
          AppRoutes.js
     |_
       App.js

  |_
    package.json

我想将文件夹中的所有内容复制cs-templatenew_dest1文件夹中。它们都定义在同一级别。我基本上是在调用 HTTP 请求,之后我想复制内容。因此,在路由控制器中,我定义了以下逻辑:

'use strict';


var mongoose = require('mongoose'),
  Task = mongoose.model('CampusStore');

exports.list_all_campus_stores = function(req, res) {
  Task.find({}, function(err, campus_store) {
    
    const system = require('system-commands');
  
    system('cp -r  ./cs-template/**/ ./new_dest1').then(output => {
      console.log(output)
    }).catch(error => {
      console.error(error)
    });

    if (err)
      res.send(err);
    res.json(campus_store);
  });
};

cp -r ./cs-template/* ./new_dest1只复制public文件夹(那个也不完整)和package.json文件。

cp -r ./cs-template/**/* ./new_dest1复制所有内容,接受父文件夹publicsrc文件夹(意味着其中的文件夹/文件被复制,但文件夹本身不是)和package.json. 正确的做法是什么?

标签: node.jsshellcp

解决方案


尝试这个:

您可以使用以下命令将文件夹 /source 的内容复制到另一个现有文件夹 /dest

cp -a /source/. /dest/

-a 选项是改进的递归选项,它保留所有文件属性,还保留符号链接。

这 。在源路径的末尾是一个特定的 cp 语法,它允许复制所有文件和文件夹,包括隐藏的。

-a :保留指定的属性,例如目录、文件模式、所有权、时间戳,如果可能的话,还有其他属性:上下文、链接、xattr、所有。

-v :解释正在做什么,详细视图。

-r :递归复制目录。例子

如果它不起作用,请使用替代方法:

有一些模块支持复制文件夹及其内容。最受欢迎的是 wrench.js:

// 深拷贝现有目录

wrench.copyDirSyncRecursive('directory_to_copy','location_where_copy_should_end_up');

另一种方法是 node-fs-extra:

fs.copy('/tmp/mydir', '/tmp/mynewdir', function (err) {
  if (err) {
    console.error(err);
  } else {
    console.log("success!");
  }
});

推荐阅读