根据文件名中的数字移动文件

Move files according to number in filename

我正在尝试根据名称中的数字移动文件夹中的文件。 文件的名称类似于 fooNNN_bar.txt 我想将它们组织为 /NNN/fooNNN_bar.txt

这是我目前拥有的。它打印出每个文件必须移动到的文件夹。我不确定如何收集数字以将其添加到 mv 命令中。这甚至是正确的方法吗?

#!/bin/bash
  for filename in foo*.txt; 
  do 
  echo "${filename}" | grep -Eo '[0-9]{1,4}';
done

假设您的 grep 如您所愿:

#!/bin/bash
  for filename in foo*.txt; do 
      num=$(echo "${filename}" | grep -Eo '[0-9]{1,4}')
      mkdir -p "$num"
      mv "$filename" "$num"
done