在linux中,将所有以相同前缀开头的文件放在一个文件夹中

在linux中,将所有以相同前缀开头的文件放在一个文件夹中,linux,file,grouping,Linux,File,Grouping,我在一些旧数据中有不同的文件 它们在同一个文件夹中 它们按前缀分组 我想移动同名文件夹中以相同前缀开头的所有文件 正在查找自动执行此操作的脚本 编辑1 脚本必须自己查看有多少前缀,然后分组 谢谢作为一个起点,ls-1列出所有文件,通过管道连接到awk命令以获得所有唯一前缀: xxx yyy zzz www ... 然后,使用awkcommmand的输出并循环创建前缀目录,并按照@Noufal-Ibrahim的建议将所有文件移动到其中: mkdir ${prefix} && mv

我在一些旧数据中有不同的文件

它们在同一个文件夹中

它们按前缀分组

我想移动同名文件夹中以相同前缀开头的所有文件

正在查找自动执行此操作的脚本

编辑1 脚本必须自己查看有多少前缀,然后分组


谢谢作为一个起点,
ls-1
列出所有文件,通过管道连接到
awk
命令以获得所有唯一前缀:

xxx
yyy
zzz
www
...
然后,使用
awk
commmand的输出并循环创建前缀目录,并按照@Noufal-Ibrahim的建议将所有文件移动到其中:

mkdir ${prefix} && mv ${prefix}* prefix
我不是awk专家,但在我的头脑中,我认为awk脚本应该是这样的:

BEGIN {
    // initialize associative array $x
}

{ $x[prefix($0)] = 1; }

END {
   // foreach key in $x:
       print $key
}

剧本?为什么不
mkdir prefix&&mv prefix*prefix
?我事先不知道所有前缀,脚本也会找到所有前缀,脚本应该如何确定什么是前缀,什么不是前缀?您可能需要显示一些有代表性的数据,以及您尝试过的不起作用的数据。。。从技术上讲,每个文件名都是一个(唯一的)前缀,但我怀疑您所想的仅限于文件名的某些(可能是非统一的)子集,但是脚本如何知道前缀的结尾和后缀的开头呢?它仅仅是4个字符,还是17个字符,或者是由
\uu
或其他完全不同的东西分隔的?。。。