查找包含但不以 . (点)

查找包含但不以 . (点)

如何查找所有包含 .在文件夹名称中?我尝试了以下操作,但它列出了所有文件夹,而不是我想要的; 寻找 。 -最大深度 2 -类型 d -ipath "

我似乎有很多类似这样命名的文件夹;Brain.Dead.1990.1080p.BluRay.x264-HD4U[rarbg]这对我来说简直是丑陋。我想列出它们,然后将它们的名称编辑为更易读的名称。有什么线索吗?

答案1

另一个没有正则表达式的发现

find . -maxdepth 2 -type d -name '*.*' ! -name '.*'

答案2

find . -maxdepth 2 -type d -name '*.*'

.报告名称中包含.、和 的./user/.config任何目录。./.foo.d./.foo/bar.baz

find . -maxdepth 2 -type d -name '?*.*'

.将在第一个字符之后的部分中查找,因此它将匹配 on.foo.d但不匹配.configor .

find . -maxdepth 2 -type d -name '[!.]*.*'

会省略隐藏目录(名称以 开头的目录.),但仍会在隐藏目录中找到非隐藏目录(会找到./.foo/foo.bar)。

find . -maxdepth 2 -name '.?*' -prune -o -type d -name '?*.*' -print

不会遍历也不会报告隐藏目录。

其中唯一的非标准部分是-maxdepth 2您已经在使用的部分。标准等效项是:

find . -name '.?*' -prune -o \
   \( ! -path './*/*' -o -prune \) \
   -type d -name '?*.*' -print

答案3

find如果您的版本支持正则表达式,则可以使用正则表达式:

find . -maxdepth 2 -type d -regex '.*/[^./][^/]*\.[^/]*'

这与名称以“.”以外的任何字符开头的任何目录(最大深度为 2)匹配。并包含一个“.”在任何其他位置。

相关内容