如何使用终端将文件夹的内容复制到不同目录中的另一个文件夹?

pan*_*zia 1078 command-line cp

我正在尝试使用终端将文件夹的内容复制到不同目录中的另一个文件夹。

有人能够为我提供实现此目的所需的命令行语法示例吗?

enz*_*tib 1609

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

cp -a /source/. /dest/
Run Code Online (Sandbox Code Playgroud)

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

.在源路径的终点是一个特定的cp语法,允许复制所有文件和文件夹,包括隐藏的人。

  • @DylanValade:`-a` 已经暗示了 `--preserve=all`,比 `-p = --preserve=mode,ownership,timestamps` 更宽。 (5认同)
  • “源路径末尾的 . 是一种特定的 cp 语法,它允许复制所有文件和文件夹,包括隐藏的文件和文件夹。”,这与 cp 无关,但与 bash 相关。点表示“这个位置”并避免使用 bash globbing,默认情况下文件/目录以 . 不展开。 (4认同)
  • @BennyNeugebauer:“scp”用于通过网络进行复制(通过“ssh”),并且仅加密通信通道,而不加密目标文件系统上的文件。 (2认同)
  • 对于 `rm` 递归选项是 -r 对于 `cp` 是 -a,亲爱的 linux 人们是如何记住所有这些的 (2认同)
  • @BrunoPereira:我的句子是错误的,但我认为“bash”与此无关。UNIX 用点表示当前目录,而“cp”,当给定两个目录“path/foo”和“bar”作为参数以及递归选项(如“-a”)时,会创建一个新目录“foo”在“bar”下,并将“path/foo”中包含的所有文件复制到“bar/foo”下。如果 `bar/foo` 已经存在,则跳过创建步骤。鉴于“dest/.”已经存在,这就是这里发生的情况。 (2认同)

Pan*_*her 172

另一种方法是rsync

rsync -a source/ destination
Run Code Online (Sandbox Code Playgroud)

的优点rsync是:

  1. 初始同步后,它将仅复制已更改的文件。
  2. 您可以通过网络使用它,方便 $HOME 中的文件,尤其是配置文件。

  • 我认为你不需要星号。`rsync -r source/destination` 应该足够了,不是吗? (6认同)
  • 如果它是一个大文件夹,您可能希望在复制时使用这些选项之一来查看进度 https://askubuntu.com/questions/609303/how-can-i-view-a-progress-bar-when-running-同步 (2认同)

Bru*_*ira 101

比方说你有一个文件夹,名为文件夹1在您的~,内部的folder1是1个文件调用文件1和2个文件夹叫SUB1SUB2各自与其他文件和文件夹里面他们。

要将所有内容复制~/folder1~/new_folder1您将使用

cp -r ~/folder1/. ~/new_folder1
Run Code Online (Sandbox Code Playgroud)

new_folder1然后将包含来自folder1.

cp是使用终端复制的命令,-r使其递归(因此,当前目录+当前内部的其他目录)~/folder1是原始文件夹,~/new_folder1是原始文件夹中文件/文件夹的目标文件夹。

  • 它不会捕获隐藏文件 (6认同)
  • 尾随期很重要。没有它,有时它可能会创建一个新的子目录 `~/new_folder1/folder1` 而不是复制内容。 (6认同)
  • 为什么不`cp -r ~/folder1/* ~/new_folder1` (4认同)

Kar*_*son 26

简单的例子。

目录 dir_1 及其内容(文件复制到目录dir_2 中

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_
Run Code Online (Sandbox Code Playgroud)

复制唯一的内容(文件DIR_1的)进入目录DIR_2

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_
Run Code Online (Sandbox Code Playgroud)

_files_ 是位于目录中的实际文件的占位符。


Dil*_*mar 17

检查这个http://www.cyberciti.biz/faq/copy-folder-linux-command-line/有关复制文件夹的更多信息。希望这可以帮助。

cp Command
Run Code Online (Sandbox Code Playgroud)

cp是一个用于复制文件和目录的 Linux 命令。语法如下:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination
Run Code Online (Sandbox Code Playgroud)

在此示例中,将/home/vivek/letters文件夹及其所有文件复制到/usb/backup目录:

cp -avr /home/vivek/letters /usb/backup
Run Code Online (Sandbox Code Playgroud)

在哪里,

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

-v : 解释一下是做什么的。

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

将名为 /tmp/conf 的文件夹复制到 /tmp/backup:

$ cp -avr /tmp/conf/ /tmp/backup
Run Code Online (Sandbox Code Playgroud)

  • 这不是问题要问的。 (3认同)

Sup*_*Ito 6

此带有标志“-R”的代码将“folder1”所有内容完美复制到现有的“folder2”

\n
cp -R folder1/. folder2\n
Run Code Online (Sandbox Code Playgroud)\n

标志“-R”也复制符号链接,但标志“-r”跳过符号链接,因此标志“-R”比标志“-r”更好

\n
    \n
  • 最新的 GNU Grep 3.7
  • \n
\n
-R, --dereference-recursive\n\nFor each directory operand, read and process all files in that directory, \nrecursively, following all symbolic links.\n
Run Code Online (Sandbox Code Playgroud)\n
-r, --recursive\n\nFor each directory operand, read and process all files in that directory, \nrecursively. Follow symbolic links on the command line, but skip symlinks \nthat are encountered recursively. Note that if no file operand is given, \ngrep searches the working directory. This is the same as the \n\xe2\x80\x98--directories=recurse\xe2\x80\x99 option.\n
Run Code Online (Sandbox Code Playgroud)\n


zar*_*pio 5

我喜欢这个命令

\n\n
rsync -av --progress ~/code/project-source/. ~/code/project-destination --exclude .git --exclude node_modules\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

下面列出了 rsync 命令中的一些常用选项:

\n
\n\n
    \n
  • -v, \xe2\x80\x93verbose:详细输出
  • \n
  • -q, \xe2\x80\x93quiet:抑制消息输出
  • \n
  • -a, \xe2\x80\x93archive:同步时归档文件和目录(-an 等于以下选项 -rlptgoD)
  • \n
  • -r, \xe2\x80\x93recursive:递归同步文件和目录
  • \n
  • -b,\xe2\x80\x93backup:同步期间进行备份
  • \n
  • -u, \xe2\x80\x93update:如果目标文件较新,则不要将文件从源复制到目标
  • \n
  • -l, \xe2\x80\x93links:在同步期间将符号链接复制为符号链接
  • \n
  • -n,\xe2\x80\x93dry-run:执行不同步的试运行
  • \n
  • -e, \xe2\x80\x93rsh=COMMAND:提及要在 rsync 中使用的远程 shell
  • \n
  • -z, \xe2\x80\x93compress:在传输过程中压缩文件数据
  • \n
  • -h, \xe2\x80\x93人类可读:以人类可读的格式显示输出数字
  • \n
  • \xe2\x80\x93progress:显示传输过程中的同步进度
  • \n
\n