如何在 Linux 中复制目录及其内容

使用“cp”命令将整个目录从一个地方复制并粘贴到另一个地方

无论您运行的是哪种操作系统,将一个文件或文件夹从一个位置复制到另一个位置都是您每天执行的最基本任务。在工作繁忙的一天,在学校的项目分配期间,或在项目的持续开发过程中,将文件从位置 A 复制到位置 B 是不可避免的。

文件或文件夹的复制通常使用 GUI 完成。 Linux 通过提供命令行实用程序来照顾您在终端上工作的习惯,该实用程序允许您将文件或文件夹从一个位置复制到另一个位置。使用 cp 带有各种选项的命令使您可以自由地以多种方式复制文件和文件夹。

让我带您阅读这篇文章,您将在其中了解 cp 命令以及复制目录及其内容的方法。

可用选项 cp 命令

这些是最常用的选项 cp 命令在复制目录及其所有内容的上下文中。

选项描述
-v详细模式(显示进度)
-r/R递归复制目录
-n不要覆盖现有的文件或文件夹
-一世覆盖前提示

将目录从一个位置复制到另一个位置

让我们从最基本的使用开始 cp 命令。我们将使用此命令与选项 -r.

使用 -r 选项确保您正在复制的目录中的子文件夹和文件也将被复制。

句法:

cp -r [源位置] [目标位置]

例子:

我当前的工作目录中有两个目录,分别称为“project”和“workspace”。

在这个例子中,我将使用 cp -r 命令将目录“project”及其所​​有内容复制到新位置,即“/home/gaurav/workspace”。这只是意味着我正在将名为“project”的目录复制到名为“workspace”的目录中。

这些是目录“project”的内容。使用 ls 命令显示其内容。

gaurav@ubuntu:~/project$ ls -al total 288 drwxr-xr-x 6 gaurav gaurav 4096 Sep 17 18:26 。 drwxr-xr-x 88 gaurav gaurav 266240 Sep 17 18:24 .. drwxr-xr-x 2 gaurav gaurav 4096 Sep 17 18:25 dem1, drwxr-xr-x 2 gaurav gaurav 4091 98:24 drwxr-xr-x 2 gaurav gaurav 4096 -x 2 gaurav gaurav 4096 Sep 17 18:25 dem3 drwxr-xr-x 2 gaurav gaurav 4096 Sep 17 18:25 dem4 -rw-r--r-- 1 gaurav gaurav 24 Sep 17 18:26 gaurav @ temp.c ubuntu:~/project$

现在,使用 cp -r 命令我们可以将目录“project”复制到任何所需的位置。

gaurav@ubuntu:~$ cp -r /home/gaurav/project /home/gaurav/workspace gaurav@ubuntu:~$

输出:

gaurav@ubuntu:~/workspace$ ls -al 总计 408 drwxrwxr-x 4 gaurav gaurav 4096 Sep 17 18:27 。 drwxr-xr-x 88 gaurav gaurav 266240 Sep 17 18:24 .. drwxrwxr-x 3 gaurav gaurav 4096 Mar 22 2018 .metadata drwxr-xr-x 6 gaurav gaurav 477-r2wr 4096 Sep 4096 -- 1 gaurav gaurav 1535 Sep 16 17:13 source.c gaurav@ubuntu:~/workspace$ 

在上面的输出中,我们可以看到目录“project”从原始位置复制到这个新位置“/home/gaurav/workspace”。现在,让我们打开目录“project”并检查其中是否也复制了所有内容。

gaurav@ubuntu:~$ cd ./workspace/project gaurav@ubuntu:~/workspace/project$

笔记: 我用过了 ./ 此处而不是输入完整路径。它只是意味着它是我的主目录路径,工作区位于我的主目录或当前工作目录中。有关这方面的更多说明,您可以查看这篇文章。

输出:

gaurav@ubuntu:~/workspace/project$ ls -al total 28 drwxr-xr-x 6 gaurav gaurav 4096 Sep 17 18:27 。 drwxrwxr-x 4 gaurav gaurav 4096 9 月 17 日 18:27 .. drwxr-xr-x 2 gaurav gaurav 4096 9 月 17 日 18:27 dem1,drwxr-xr-x 2 gaurav gaurav 4096 9 月 17 日-xrx 27 2 gaurav gaurav 4096 Sep 17 18:27 dem3 drwxr-xr-x 2 gaurav gaurav 4096 Sep 17 18:27 dem4 -rw-r--r-- 1 gaurav gaurav 24 Sep 17 18:27 @ temp.c gau 〜/工作区/项目$ 

从这个输出中,我们可以得出结论,目录“project”的所有内容也被移动到了新位置。

将多个目录从一个位置复制到另一个位置

要复制多个目录, cp 命令可以以与上述相同的方式使用。这里唯一的变化是您需要输入要复制的多个目录的多个源路径。

句法:

cp -r [source_path_1] [source_path_n] [destination_path]

让我们用一个例子来检查这个命令。

例子:

gaurav@ubuntu:~/workspace$ cp -r ./snap ./project /home/gaurav/tomcat

在这里,我已将当前工作目录中的两个目录“snap”和“project”复制到新位置“/home/gaurav/tomcat”。

现在让我们检查目录是否与其内容一起复制到新位置。

gaurav@ubuntu:~/tomcat$ ls -al 总计 9316 drwxrwxr-x 5 gaurav gaurav 4096 Sep 19 12:16 。 drwxr-xr-x 88 gaurav gaurav 266240 Sep 19 12:15 .. drwxr-xr-x 6 gaurav gaurav 4096 Sep 19 12:16 项目 drwxr-xr-x 7 gaurav gaurav 4096:16 年 9 月 snap

检查这些目录的内容是否也被复制。

gaurav@ubuntu:~/tomcat/snap$ ls couchdb eclipse htop pycharm-community vim-editor gaurav@ubuntu:~/tomcat/snap$ 
gaurav@ubuntu:~/tomcat/project$ ls dem1, dem2 dem3 dem4 temp.c gaurav@ubuntu:~/tomcat/project$

使用 cp 具有详细模式的命令

使用 cp 带选项的命令 -v 启用详细模式。此功能显示正在复制的终端上的文件。正在复制的文件或文件夹的名称将显示在您的终端上。

句法:

cp -vr [source_directory] ​​[target_location_path]

例子:

gaurav@ubuntu:~$ cp -vr ./workspace/apache ./space

在这个例子中,目录‘apache’被复制到一个新的文件夹‘space’。我已经使用了 -v 选项与 -r,以便 apache 目录的所有内容也被复制。

输出:

'./workspace/apache' -> './space/apache' './workspace/apache/apache-tomcat-8.0.52.tar.gz' -> './space/apache/apache-tomcat-8.0. 52.tar.gz' gaurav@ubuntu:~$

输出显示正在复制的目录。如果复制多个文件,可以执行相同的过程。

使用时避免覆盖 cp 命令

有时在使用 cp 命令复制多个文件或文件夹,您最终可能会覆盖已复制到新位置的文件。为避免这种情况,建议使用 -一世 选项与 cp 命令。这将在覆盖任何文件或文件夹之前提示您。

句法:

cp -ri [source_directory_path] [target_location_path]

笔记: 在这里,在我使用的语法中 -r 选项。这也将复制目录的内容。它还将检查目录中的任何这些子文件夹和文件是否被覆盖。

例子:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat cp: 覆盖'./tomcat/snap/pycharm-community/current'?

在这里,我尝试将名为“snap”的目录复制到新位置。但是目录名称“snap”已经存在于新位置。因此,在覆盖现有的 snap 目录之前,终端会提示我。

你可以输入‘是的' 或者 '' 作为对此提示的回应。

如果您不使用 -一世 选项,现有目录将被新目录覆盖。

跳过覆盖文件和目录 cp 命令

我们可以使用 -n 直接指示终端在使用时不要覆盖并简单地跳过类似的文件和目录的选项 cp 命令。

句法:

cp -nr [source_directory_path] [target_location_path]

使用此命令,您可以确保您的文件和文件夹不会被覆盖。

例子:

gaurav@ubuntu:~$ cp -ri ./workspace/snap ./tomcat gaurav@ubuntu:~$

此处,目标位置已存在目录“snap”。因此,使用 -n 选项将确保不会覆盖此目录。

不像 -一世 选项,这里不会提示您覆盖。

结论

使用 cp 在 Linux 中复制目录及其内容的命令是一个简单的过程。要了解更多关于 cp 命令与其他可用选项,您可以通过键入查看手册页 人cp 在您的 Linux 终端中。