gpt4 book ai didi

shell - 查找包含字符串出现次数的文件

转载 作者:行者123 更新时间:2023-12-04 16:17:56 26 4
gpt4 key购买 nike

我的任务之一是计算与特定日期模式匹配的文件数量。实际上,我需要做的是循环遍历目录,检查每个文件名,找到该文件名中的第二个句点,然后检查接下来的 4 个字符以查看我正在组装的日期字符串是否匹配。

2012 年 11 月将表示为“1211”。使用下面文件名中第二个句点之后的前四个字符,这将使我们命中第一个文件名(“o.tt.121113150804”),因为它与该模式匹配。我会计算该文件的数量,然后不理会其他两个文件。

下面的文件只是一个示例。它们可以用多种不同的方式命名。它们通常只是 99% 以下时间的变体。事实上,有 2 个句点,我需要检查第 2 个句点之后的 4 位数字,但这是一个确定的常数。

我需要检查的文件名:

o.tt.121113150804
o.stpw.101209092541
i.rtat.120831045704

最佳答案

这可以单独使用 ls 来完成,但这也将匹配目录:

$ ls
i.rtat.120831045704 o.stpw.101209092541 o.tt.121113150804

$ ls *.*.1121*
o.tt.121113150804

但是 find 更强大、更灵活:

$ find . -maxdepth 1 -type f -iname "*.*.1211*"
./o.tt.121113150804

选项:

-maxdepth 1 只在这个目录中查找。

-type f 只能查找文件,不能查找目录。

-iname 使用模式来匹配文件名,其中 * 匹配任何内容,因此 *.*.1211* 匹配后面跟着 的任何内容. 后跟任何内容,然后是第二个 . 后跟您的日期字符串和 * 任何其他内容。

编辑:

要计算匹配数,您可以通过管道传输到 wc -l 并使用命令替换 $(...) 将值存储在变量中:

$ ls
i.rtat.120831045704 o.stpw.101209092541 o.tt.121113150804
o.tt.121113150804c1 o.tt.121113150804c2

$ find . -maxdepth 1 -type f -iname "*.*.1211*" | wc -l
3

$ found=$(find . -maxdepth 1 -type f -iname "*.*.1211*" | wc -l)

$ echo $found
3

关于shell - 查找包含字符串出现次数的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com