在 Linux 中保留目录结构的同时复制特定文件类型

不久前,我们学会了如何 将某种类型的文件从一个目录复制到另一个目录 在 Linux 中。 今天我们将做同样的事情,但也要保留目录结构。 这个简短的教程解释了如何复制特定的文件类型,同时在 Linux 中保持目录结构。 在这里,我给出了两种不同的方法来做到这一点。 只需选择适合您的任何一个。

在 Linux 中保留目录结构的同时复制特定文件类型

想象一下这个场景。

我有一个名为 “Linux” 不同类型的文件保存在不同的子目录中。 看看下面的目录结构:

$ tree Linux/ Linux/ ├── dir1 │   ├── English │   │   └── Kina - Can We Kiss Forever.mp3 │   ├── Instrumental │   │   └── Chill Study Beats.mp3 │   └── Tamil │       ├── Kannan Vanthu.mp3 │       └── yarenna.mp3 ├── dir2 │   ├── file.docx │   └── Raja Raja Chozan Naan.mp3 ├── dir3 │   ├── Bamboo Flute - Meditation - Healing - Sleep - Zen.mp3 │   └── pic.jpg └── dir4     ├── Aaruyirae.mp3     └── video.mp4  7 directories, 10 files

使用 tree 命令列出目录内容

正如您在上面的目录结构中看到的, Linux 目录有四个子目录,即 目录1, 目录2, 目录3目录4. 这 mp3 文件分散在所有四个子目录中。 现在,我想复制所有 mp3 文件到另一个名为 “骨科” 而且我想在目标目录中保持相同的目录结构。

首先,我们将看到如何使用“find”命令来做到这一点。

方法 1 – 使用“find”和“cp”或“cpio”命令

进入源目录:

$ cd Linux/

并使用“find”命令复制所有 mp3 fie 类型:

$ find . -name '*.mp3' -exec cp --parents {} ~/ostechnix ;

让我们分解上面的命令,看看每个选项的作用。

  • 寻找 – 在类 Unix 系统中查找文件和文件夹的命令。
  • (.) – 表示我们从当前目录复制内容。
  • -iname ‘*.mp3’ – 搜索与扩展名 .mp3 匹配的文件。
  • -exec cp – 执行“cp”命令将文件从源目录复制到目标目录。
  • – 父母 – 如果需要,创建中间父目录以保留父目录结构。
  • {} – 自动替换为“find”命令找到的文件的文件名。 并且大括号被逃脱了 在某些“查找”命令版本中保护它们不被 shell 扩展。 你也可以使用 {} 没有转义字符。
  • ~/ostechnix – 目标目录保存匹配的文件。
  • ; – 表示要执行的命令现在已完成,并在下一场比赛中再次执行该命令。

此命令将从 ~/Linux 目录中查找所有 mp3 类型文件并将其复制到 ~/ostechnix 目录。 而且它还在目标目录中保留了相同的目录结构。

您可以在两个位置使用“tree”命令进行验证,如下所示。