查找符合多个条件的文件并将其复制到文件夹

查找符合多个条件的文件并将其复制到文件夹

我是这个论坛的新手,希望有人能够帮助我。

我是 MacOS 用户。

我有一个文件夹 A约有 5000 个文件。它们的命名如下:

预订 #0001 - 已放置
预订 #0001 -预付 预订
#0001 - 已付款
预订 #0002 - 已放置
预订 #0002 - 已取消
预订 #0003 - 已放置
预订 #0003 -
预付 预订 #0003 - 已付款 预订#0004
- 已放置
预订 #0004 -
预付 预订 #0004 - 已付款
预订 #0005 - 已放置
预订 #0005 - 预付
预订 #0005 - 已付款
预订 #0006 - 已放置
预订 #0006 - 已取消
...
预订 #NNNN - 已放置

我有一份预订号码列表(0002、0007、0012、0899,...,NNNN),我需要将包含这些号码的文件(无论它们是-PLACED、-PAID 还是 -CANCELLED)复制到文件夹 B

手动执行此操作将需要数百个小时,并且很容易出现错误。

我正在寻找使用终端命令来实现该目的的解决方案。

如果需要的不仅仅是一个终端命令或任何其他帮助,我将非常感激逐步的指导。

答案1

如果文件中每行一个数字numbers,请尝试:

while read -r num; do mv *"$num"* /path/to/folder2; done <numbers

例子

让我们从包含以下文件的目录开始:

$ ls
Booking #0001 - PAID       Booking #0002 - PLACED   Booking #0004 - PAID     Booking #0005 - PLACED     numbers
Booking #0001 - PLACED     Booking #0003 - PAID     Booking #0004 - PLACED   Booking #0005 - PREPAID
Booking #0001 - PREPAID    Booking #0003 - PLACED   Booking #0004 - PREPAID  Booking #0006 - CANCELLED
Booking #0002 - CANCELLED  Booking #0003 - PREPAID  Booking #0005 - PAID     Booking #0006 - PLACED

并且 folder2 是空的:

$ ls ../folder2
$ 

文件numbers看起来像:

$ cat numbers
0002
0004

现在,运行我们的命令:

$ while read -r num; do mv *"$num"* ../folder2; done <numbers

之后,我们当前目录只剩下这些文件:

$ ls
Booking #0001 - PAID     Booking #0003 - PAID     Booking #0005 - PAID     Booking #0006 - CANCELLED
Booking #0001 - PLACED   Booking #0003 - PLACED   Booking #0005 - PLACED   Booking #0006 - PLACED
Booking #0001 - PREPAID  Booking #0003 - PREPAID  Booking #0005 - PREPAID  numbers

现在 folder2 包含以下文件:

$ ls ../folder2
Booking #0002 - CANCELLED  Booking #0002 - PLACED  Booking #0004 - PAID  Booking #0004 - PLACED  Booking #0004 - PREPAID

相关内容