Как переместить совпадающий идентификатор файлов mat в другую папку

I иметь файлы Matlab (.mat) в определенной папке. В текстовом документе у меня есть список идентификаторов, помеченных как 0 и 1. Сначала мне нужно сопоставить идентификаторы и разделить файлы матов, помеченные как '1'. Для справки я подробно описал это ниже с помощью набор образцов.

Например: Предположим, что у меня есть эти файлы в папке

2424903_ (1)_crop_vampire_3.1.2.mat
1905302 (2)_crop_vampire_3.1.2.mat
1904802 (1)_crop_vampire_3.1.2.mat
1902101_IYYANAR (1)_crop_vampire_3.1.2.mat

Текстовый файл:

2424903 - 1
1905302 - 0
1904802 - 0
1902101 - 1

Ожидаемый результат:

2424903_ (1)_crop_vampire_3.1.2.mat
1902101_IYYANAR (1)_crop_vampire_3.1.2.mat

Мне нужны только эти 2 файла в отдельной папке.

Я пробовал следующие коды

$cat file.txt | xargs mv -t ./new folder
$xargs -a file.txt mv -t ./new folder

, но получаю такие ошибки, как «Нет такого файла или каталогов» Пожалуйста, предложите код / ​​метод для разделения этих файлов.

0
задан 20 August 2021 в 12:56

1 ответ

Попробуйте этот сценарий:

#!/bin/bash

while read -r line
do
  id_num=$(echo "$line" | cut -d ' ' -f 1)
  id_inc=$(echo "$line" | cut -d ' ' -f 3)
  if [[ "$id_inc" == 1 ]]; then
    file=$(find -name "${id_num}*")
    mv "$file" -t './new folder'
    # echo "$file" # if you want to print the filename
  fi
done < file.txt

Возникла проблема с Xargs и именами файлов, содержащими пробелы. Вместо этого это решение проходит через каждую строку, проверяет, является ли последнее поле равным 1, и в этом случае перемещает файл в новую папку .

0
ответ дан 4 September 2021 в 09:28

Другие вопросы по тегам:

Похожие вопросы: