首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash `l‘输出中子集文件名

如何在bash `l‘输出中子集文件名
EN

Stack Overflow用户
提问于 2020-11-12 15:24:40
回答 3查看 122关注 0票数 0

因此,我有一个以日期(yyyymmdd)开头的文件列表,然后它们有不同的结尾。我想过滤所有的日期和查找uniq的日期,并计算它们。所以像这样的伪码:

ls | grep 'file[0:8]' | unique | wc -l

但这显然行不通。那么,对于如何更容易地做到这一点,有什么办法吗?我掌握的数据如下所示:

代码语言:javascript
复制
20160124_vv_iw2.slc           20170118_vv_iw2.slc.tops_par  20190120_vv_iw2.slc.par
20160124_vv_iw2.slc.par       20170915_vv_iw2.slc           20190120_vv_iw2.slc.tops_par
20160124_vv_iw2.slc.tops_par  20170915_vv_iw2.slc.par       20200911_vv_iw2.slc
20160827_vv_iw2.slc           20170915_vv_iw2.slc.tops_par  20200911_vv_iw2.slc.par
20160827_vv_iw2.slc.par       20180113_vv_iw2.slc           20200911_vv_iw2.slc.tops_par
20160827_vv_iw2.slc.tops_par  20180113_vv_iw2.slc.par       20200923_vv_iw2.slc
20170118_vv_iw2.slc           20180113_vv_iw2.slc.tops_par  20200923_vv_iw2.slc.par
20170118_vv_iw2.slc.par       20190120_vv_iw2.slc           20200923_vv_iw2.slc.tops_par
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-12 18:42:46

Don't use ls in scripts.

代码语言:javascript
复制
printf "%-8.8s\n" * | uniq | wc -l

更广泛地说,你可以做一些类似的事情

代码语言:javascript
复制
for file in *; do
    echo "${file:0:8}"
done | uniq | wc -l

就像任何面向行的方法一样,如果文件名中有换行符,这种情况就会中断。

如果您只想在第一个下划线处拆分,"${file%%_*}"就会这样做。

票数 2
EN

Stack Overflow用户

发布于 2020-11-12 15:40:36

代码语言:javascript
复制
ls -1 | sed -E 's/^[^_]+_//' | sort -u | wc -l

代码语言:javascript
复制
ls -1 | sed -E 's/^[[:digit:]]+_//' | sort -u | wc -l
票数 1
EN

Stack Overflow用户

发布于 2020-11-12 17:03:29

使用此Perl一行程序,并结合uniq | wc -l

代码语言:javascript
复制
perl -le 'print sort /^(\d+)/ for glob "*";' | uniq | wc -l
8

Perl一行程序使用以下命令行标志:

-e:告诉Perl在行中查找代码,而不是在文件中。

-l:在执行代码行之前,先去掉输入行分隔符(默认情况下是*NIX上的"\n"),然后在打印时追加它。

glob "*"返回所有文件和目录的列表。

/^(\d+)/返回regex匹配项,这里是文件名开头的数字段。如果您需要确切的数字数,请使用类似于/^(\d{8})/的内容。

还请参见:

perldoc perlrun: how to execute the Perl interpreter: command line switches

perldoc perlrequick: Perl regular expressions quick start

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64806785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档