我是这个论坛的新手,希望有人能够帮助我。
我是 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