如何将匹配 ID 的 mat 文件移动到不同的文件夹中

如何将匹配 ID 的 mat 文件移动到不同的文件夹中

我在一个特定文件夹中有 Matlab (.mat) 文件。在文本文档中,我有一些标记为 0 和 1 的 ID 列表。首先,我需要匹配 ID 并分离标记为“1”的 mat 文件。为了供您参考,我在下面用一个示例集详细说明了这一点。

例如:假设我在一个文件夹中有这些文件

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

但我收到诸如“没有这样的文件或目录”之类的错误,请建议一个代码/方法来分离这些文件。

答案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,在这种情况下将文件移动到new folder

相关内容