根据文件名的一部分创建文件夹

WxP*_*lot 4 bash scripts

我有几个名为这样的文件:

KILN_SDUS51_N0SILN_201203020003
KILN_SDUS51_N0QILN_201203020003
KILN_SDUS51_N0RILN_201203020003
Run Code Online (Sandbox Code Playgroud)

我需要所有这些文件到基于之间的三个字符的文件夹_ILN(即N0SN0QN0R)。

我一直在尝试编写一个 bash 脚本来执行此操作,但我发现的大多数类似示例都涉及使用 f% 参数,这在这种情况下似乎不适用。

gei*_*rha 9

这样的事情应该做:

for file in ./*_???ILN*; do
    dir=${file%ILN*}
    dir=${dir##*_}
    mkdir -p "./$dir" &&
    mv -iv "$file" "./$dir"
done
Run Code Online (Sandbox Code Playgroud)

有关bash 中字符串操作的更多信息,请参阅FAQ 100