将文件移动到与文件同名的新文件夹?

0 bash shell terminal

如何将一组共享文件名前9个字符的文件移动到同名9个字符的已创建文件夹中

 example

  I have a folder containing number of files with various names each
  group    of files begin with same 9 characters ex:

  first group [HD9523587_352, HD9523587_258, HD9523587_785 ,HD9523587_473]
  second group[Hip046329_258, Hip046329_364, Hip046329_681, Hip046329_235]

  and so on
Run Code Online (Sandbox Code Playgroud)

我需要使用每组相同的9个字符创建新文件夹,然后将每个组文件移动到这些文件夹中.谢谢

che*_*ner 7

只需提取前9个字符作为目录名称即可.在bash,最简单的方法是使用正则表达式匹配参数子串扩展.

for f in *; do
    # [[ $f =~ ^(.{9}) ]]
    # dir=${BASH_REMATCH[1]}
    dir=${f:0:9}
    mkdir -p "$dir" && mv "$f" "$dir"
done
Run Code Online (Sandbox Code Playgroud)