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
,那个可能还有用:-))
我有一个目录,其中包含几年零几个月的数据。 文件名的格式为 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
,那个可能还有用:-))