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