Я новичок на этом форуме и надеюсь, что кто-нибудь сможет мне помочь.
Я пользователь MacOS.
У меня есть папка A с примерно 5000 файлами. Они названы, как описано ниже:
Бронирование № 0001 - РАЗМЕЩЕНА
Бронирование № 0001 - ПРЕДОПЛАТА
Бронирование № 0001 - ОПЛАЧЕНО
Бронирование № 0002 - РАЗМЕЩЕНА
Бронирование № 0002 - ОТМЕНЕНО
Бронирование № 0003 - РАЗМЕЩЕНО
Бронирование № 0003 - ПРЕДОПЛАТА
{{1} } Бронирование № 0003 - ОПЛАЧЕНО
Бронирование № 0004 - РАЗМЕЩЕННО
Бронирование № 0004 - ПРЕДОПЛАЧЕНО
Бронирование № 0004 - ОПЛАЧЕНО
{{ 1}} Бронирование № 0005 - РАЗМЕЩЕНА
Бронирование № 0005 - ПРЕДОПЛАТА
Бронирование № 0005 - ОПЛАЧЕНО
Бронирование № 0006 - РАЗМЕЩЕНО
Бронирование № 0006 - ОТМЕНА
...
Бронирование №NNNN - РАЗМЕЩЕНА
У меня есть список номеров бронирований (0002, 0007, 0012 , 0899, ..., NNNN), и мне нужны файлы, содержащие эти номера (независимо от того, являются ли они -PLACED, -PAID или -CANCELLED), которые должны быть скопированы в папку B .
Выполнение этого вручную потребует сотен часов, и ошибки очень возможны.
Я ищу решение сделать это с помощью команды терминала.
Я был бы очень признателен за пошаговое руководство, если для этого потребуется больше, чем одна команда терминала или любая другая помощь.
Если в файле 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
И папка 2 пуста:
$ 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