Bash:将多个文件移动到子文件夹中

Mar*_*n H 1 bash move find

我有一个包含几千个文件的文件夹,我想根据文件名中的字符串将它们移动到子文件夹中.这些文件都有类似的结构

一些-run1_001.txt

一些-run22_1243.txt

所以我尝试了以下脚本,以便将包含"run1"的所有文件移动到子文件夹r1和子文件夹r22中的所有"run22"文件(依此类推),但它没有那样工作,我得到一条消息"文件X与文件X"相同.

#!bin/bash

for i in {1..39}
do
foldername=r$i
#echo "$foldername"
mkdir $foldername
find . -type f -name "*run$i_*" | xargs -i mv {} $foldername/ 
done
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?

Eri*_*rik 5

for i in {1..39}
do
  mkdir -p r${i}/
  mv *run${i}_* r${i}/
done
Run Code Online (Sandbox Code Playgroud)