bash中基于文件名模式的Simil group by

bash中基于文件名模式的Simil group by,bash,Bash,给定一组文件,其文件名遵循以下模式: PREFIX_{id}_{timestamp}.xml 我想为每个id选择(并移动)带有最新时间戳的文件(格式为yyyyMMddHHmmss) 什么是有效的方法?到目前为止,我提出了: ls前缀*\ |切割-d'-f2'-\ |排序| uniq\ |xargs-I{}sh-c'ls前缀_{}*| tail-n1'| xargs-I{}cp{}/other/dir awk救援 $ ls PREFIX* | sort -t_ -k2,2 -k3,3nr | a

给定一组文件,其文件名遵循以下模式:

PREFIX_{id}_{timestamp}.xml
我想为每个
id
选择(并移动)带有最新
时间戳的文件(格式为
yyyyMMddHHmmss

什么是有效的方法?到目前为止,我提出了:

ls前缀*\
|切割-d'-f2'-\
|排序| uniq\
|xargs-I{}sh-c'ls前缀_{}*| tail-n1'| xargs-I{}cp{}/other/dir

awk
救援

$ ls PREFIX* | sort -t_ -k2,2 -k3,3nr | awk -F_ '!a[$2]++'
按id和时间的相反顺序排序,用
awk
选择第一个(最新时间戳)