Linux 查找具有相似名称的文件并移动到新目录

use*_*312 4 linux bash shell

假设我有一个无组织的目录,其中有数千个文件,这些文件的名称中带有前缀,例如 abc-tab、abc-vib、h12-123、h12-498.... 如何将具有相同前缀的文件移动到自己的目录中?

我正在考虑使用类似的东西

find . -path '*/support/*abc*' -exec mv "{}" /new/abc\;
Run Code Online (Sandbox Code Playgroud)

但这意味着我必须为每个前缀重新输入命令。

and*_*otn 5

ls使用和获取所有前缀uniq以获得单个列表,然后使用 for 循环移动文件。

for F in $(ls | cut -d- -f1 | uniq); do
    mkdir "${F}" && mv "${F}"-* "${F}"
done
Run Code Online (Sandbox Code Playgroud)

许多人从《高级 Bash 脚本指南》学习 shell 脚本。查看cutuniq手册页以获取有关这些程序的详细信息。