![查找包含但不以 . (点)](https://linux22.com/image/11675/%E6%9F%A5%E6%89%BE%E5%8C%85%E5%90%AB%E4%BD%86%E4%B8%8D%E4%BB%A5%20.%20%EF%BC%88%E7%82%B9%EF%BC%89.png)
如何查找所有包含 .在文件夹名称中?我尝试了以下操作,但它列出了所有文件夹,而不是我想要的; 寻找 。 -最大深度 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
但不匹配.config
or .
。
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)匹配。并包含一个“.”在任何其他位置。