Linux 计算文件名中特定位置具有特定字符串的文件

Linux count files with a specific string at a specific position in filename

我有一个目录,其中包含几年零几个月的数据。 文件名的格式为 yy/mm/dd、f.e.

20150415, 20170831, 20121205

如何找到月份 = 3 的所有数据? F.e.

20150302, 20160331, 20190315

感谢您的帮助!

ls -ltra ????03??

问号是代表一个字符的通配符,因此您的格式似乎是 YYYYmmDD,正则表达式 ????03?? 应该代表具有 03 的所有文件mm.

编辑
显然,这些文件的格式为 YYYYmmDDxxx,其中 xxx 是文件名的其余部分,长度未知。这将对应于正则表达式 *,因此您可以使用 ????03??*.

而不是 ????03??

find 而言:相同的正则表达式在这里成立,但由于您似乎是在一个目录中工作(乍一看没有子目录),您可能会考虑 -maxdepth开关):

find . -name "????03??*" | wc -l             // including subdirectories
find . -maxdepth 1 -name "????03??*" | wc -l  // only current directory

我强烈建议您在没有 wc -l 的情况下先检查以检查结果。 (哦,我刚看到开关 -type f,那个可能还有用:-))