如何在Linux中从一个目录中查找和复制某些类型的文件

时间:2020-03-21 11:47:52  来源:igfitidea点击:

在Linux中查找并将某些类型的文件从一个目录中复制到另一个目录

我们将使用"查找"命令进行组织文件。
查找命令在大多数Unix的发行版上预安装,因此让我们不打扰安装它。
出于本教程的目的,我将展示如何从名为test1的目录中快速查找和复制mp3文件到另一个名为test2的目录。

让我们检查测试目录的内容。

$ls /home/sk/test1

示例输出:

'Bombay Rockers.mp3' 'Marconi Union - Sleepless.mp3' wiua9.jpg
 books.txt Maruvaarthai.mp3

在上面的结果中看到,Test1目录中有三个MP3文件。
让我们将这些mp3文件复制到test2目录。
为此,请使用命令转到Test1目录:

$cd /home/sk/test1/

然后,运行以下命令以查找并复制与扩展名.mp3匹配的所有文件。

$find -iname '*.mp3' -exec cp {} /home/sk/test2/\;

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

  • 查找 - 它是在诸如UNIX系统中查找文件和文件夹的命令。
  • -iname'* .mp3' - 搜索与扩展名.mp3匹配的文件。
  • -exec cp - 告诉我们执行"cp"命令将文件从源复制到目标目录。
  • {} - 被"查找"命令发现的文件的文件名替换为自动替换。
  • /home/sk/test2/- 目标目录保存匹配文件。
  • \ - 表示要执行的命令现在已完成,并在下一个匹配上再次执行命令。

现在,让我们检查Test2目录以验证文件是否已正确复制。

$ls /home/sk/test2

示例输出将是:

'Bombay Rockers.mp3' Maruvaarthai.mp3
'Marconi Union - Sleepless.mp3'

如我们所见,扩展名为.mp3的所有文件已从test1复制到test2目录。
同样,如上所述,我们可以将其他类型的文件复制到我们选择的不同目录。

上面的命令也将从源目录及其子目录中复制所有* .mp3文件。
如果我们不想这样做,请使用-maxdepth标志。
例如,以下命令将仅从源目录中复制所有.mp3文件,但不是从其子目录中复制。

$find -maxdepth 1 -iname '*.mp3' -exec cp {} /home/sk/test2/\;

这样,我们可以在要查找特定类型的文件时节省大量时间。
当我们必须将大量不同类型的文件从一个目录传输到另一个目录时,此技巧可能会有所帮助。