我的 Samsung Galaxy S 不喜欢名称在第一个点后包含长字符串的文件。我猜想该软件的某些部分对于文件扩展名的缓冲区太短。如何找到安装在 /media/sd 的 Micro-SD 卡上的所有文件,其中文件名在第一个点之后超过五个字符?
阅读 find 手册页,我想
find . -regex '.*\..\{5,\}'
会起作用,但它不会产生任何点击,所以我不知怎的没有得到正确的正则表达式。
答案1
问题是 find 使用的正则表达式的默认类型是 emacs 样式。查找的emacs 风格正则表达式的文档不包括\{n,\}
构造 - 让我相信 find 的 emacs 风格正则表达式的实现不支持它。这emacs-wiki 将此列为有效,但是情况可能并非总是如此。
我发现如果你这样做,你的正则表达式会产生输出:
$ find . -regextype posix-basic -regex '.*\..\{5,\}'
答案2
基本正则表达式实现中并不总是包含大括号。我不知道你有GNU find还是Busybox find; Busybox 可能不具备 GNU find 的所有功能。
搜索具有长扩展名的文件的一种便携式方法是find . -name '*.?????*'
.
请注意,您的正则表达式将匹配名称包含点的目录下的大多数文件。