regex - 如何在 find 命令中使用正则表达式?

我有一些用生成的 uuid1 字符串命名的图像。例如 81397018-b84a-11e0-9d2a-001b77dc0bed.jpg。我想使用“查找”命令找出所有这些图像:

find . -regex "[a-f0-9\-]\{36\}\.jpg".

但它不起作用。正则表达式有问题吗?有人可以帮我解决这个问题吗?

最佳答案

find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"

请注意,您需要在开头指定 .*/,因为 find 匹配整个路径。

例子:

susam@nifty:~/so$ find . -name "*.jpg"
./foo-111.jpg
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
susam@nifty:~/so$ 
susam@nifty:~/so$ find . -regextype sed -regex ".*/[a-f0-9\-]\{36\}\.jpg"
./test/81397018-b84a-11e0-9d2a-001b77dc0bed.jpg
./81397018-b84a-11e0-9d2a-001b77dc0bed.jpg

我的 find 版本:

$ find --version
find (GNU findutils) 4.4.2
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Built using GNU gnulib version e5573b1bad88bfabcda181b9e0125fb0c52b7d3b
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS() CBO(level=0) 
susam@nifty:~/so$ 
susam@nifty:~/so$ find . -regextype foo -regex ".*/[a-f0-9\-]\{36\}\.jpg"
find: Unknown regular expression type `foo'; valid types are `findutils-default', `awk', `egrep', `ed', `emacs', `gnu-awk', `grep', `posix-awk', `posix-basic', `posix-egrep', `posix-extended', `posix-minimal-basic', `sed'.

https://stackoverflow.com/questions/6844785/

相关文章:

python - 将 timedelta 转换为天、小时和分钟

python - python多久刷新一次文件?

python - 在 Python 中计算字典中不同键的数量

linux - 如何找出文本文件中的行尾?

python - 在python中获取随机 bool 值?

linux - Linux 内核是如何测试的?

python - 如何找到已安装的 pandas 版本

linux - 使用端口 80 (Ubuntu/Linode) 运行 Node.js 时的最佳实践

python - 有哪些好的 Python ORM 解决方案?

linux - 如何使用 'cut' 查找最后一个字段