我如何才能找到所有包含嵌入式 crc32 的文件

我如何才能找到所有包含嵌入式 crc32 的文件

如何使用 find 命令查找所有包含嵌入式 crc32 的文件,例如 Mydocument190_[F285E17D].pdf

澄清一下,crc32 始终在括号内 [F285E17D],文件名可以包含大写、小写字母和数字

进一步澄清 crc32 在文件名中,目的是将结果传送到另一个命令进行验证(很多文件中只有一些包含前面提到的 crc32)

答案1

我同意 Ahmed 的很多观点(使用find,使用正则表达式,使用posix-extended-mode),但对于实现,存在一些问题:

  • find具有不区分大小写的-iregex模式,通过不需要指定A-Z以及a-z
  • 说到这里,CRC 是十六进制字符串。我们只需要[0-F]……我认为我们可以将其指定为单个范围。如果它不起作用,请使用[0-9a-f]
  • 我们需要检查方括号(否则它只会匹配任何 8 个字符的字符串)。
  • -regex-iregex搜索整个路径。我们需要确保您的字符串不在目录名称中,因此我们会排除 CRC 后的任何斜线。

这是我目前的最大努力:

find -regextype posix-extended -iregex '.*\[[0-f]{8}\][^/]*'

这也将允许无扩展名的文件。

答案2

您应该使用参数

-regex

使用 find 命令

然后,您将查找连续包含 8 个字符的文件名,这些字符可以是小写字母、大写字母或数字 (crc32)

以下命令可以正常工作

find . -regex '.*[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z].*'

更好的是,你可以使用选项

-regextype posix-extended

选择图案重复次数 {8},如下所示

find . -regextype posix-extended -regex '.*[0-9a-zA-Z]{8}.*'

.* 表示零个或多个随机字符

[0-9a-zA-Z]{8} 表示 0 到 9 或 a 到 z 或 A 到 Z 的任意字符连续出现 8 次

如果需要,您还可以在 crc32 周围添加文件扩展名或特定模式。

您可以详细了解正则表达式改善你的搜索模式

相关内容