我有一些用生成的 uuid1 字符串命名的图像。例如 81397018-b84a-11e0-9d2a-001b77dc0bed.jpg。我想使用“查找”命令找出所有这些图像:
find . -regex "[a-f0-9\-]\{36\}\.jpg".
但它不起作用。正则表达式有问题吗?有人可以帮我解决这个问题吗?
原文由 thoslin 发布,翻译遵循 CC BY-SA 4.0 许可协议
-regex
find 表达式匹配 整个名称,包括当前目录的相对路径。对于 find .
这总是以 ./
开头,然后是任何目录。
此外,这些是 emacs
正则表达式,除了通常的 egrep 正则表达式之外,它们还有其他转义规则。
如果这些都直接在当前目录下,那么
find . -regex '\./[a-f0-9\-]\{36\}\.jpg'
应该管用。 (我不太确定 - 我无法让计数重复在这里工作。)您可以通过 -regextype posix-egrep
切换到 egrep 表达式:
find . -regextype posix-egrep -regex '\./[a-f0-9\-]{36}\.jpg'
(请注意,这里所说的一切都是针对 GNU 查找的,我对 BSD 一无所知,这也是 Mac 上的默认设置。)
原文由 Paŭlo Ebermann 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答798 阅读✓ 已解决
2 回答3.2k 阅读
请注意,您需要在开头指定
.*/
因为find
匹配整个路径。例子:
我的查找版本: