在 Unix 中根据文件名的唯一部分列出文件

To list files based on unique part of the filename in Unix

我有一个包含以下文件的目录 -

111-xxx-typec_2015-10-13.csv.gz
111-xxx-typec_2015-10-14.csv.gz
222-yyy-typec_2015-10-13.csv.gz
222-yyy-typec_2015-10-14.csv.gz
333-zzz-typec_2015-10-13.csv.gz
333-zzz-typec_2015-10-14.csv.gz
444-ppp-typec_2015-10-13.csv.gz
444-ppp-typec_2015-10-14.csv.gz
444-ppp-typec_2015-10-15.csv.gz

我只想查看每种类型(xxx、yyy 等)的最旧文件,即输出应该是,

111-xxx-typec_2015-10-13.csv.gz
222-yyy-typec_2015-10-13.csv.gz
333-zzz-typec_2015-10-13.csv.gz
444-ppp-typec_2015-10-13.csv.gz

有办法吗?

您可以做的是执行 'ls',通过管道将其通过与 'type' 匹配的 'AWK' 脚本,然后对照字典进行检查。如果在列表中,则忽略,否则打印并添加到列表中。

像这样的 nawk 脚本:

{
   match([=10=], /(.*)-typec/, m);
   if (matches[m[1]] == "")
   {
      print ;
      matches[m[1]] = m[1];
   }
}