如何在没有表达式/正则表达式的情况下按名称查找文件,只需精确的给定名称/名称的一部分? 我将它与变量一起使用,因此可能存在特殊字符,无法进行搜索。 我使用scratch,但不喜欢它,需要明确的find/ls
find | grep -F "$name"
使用 GNU 查找
不起作用的例子
name="Poweramp v3 Skin Liv Dark - v1.7 [Proper]"
find -name "$name"
find
的 -name
谓词将其参数解释为 glob(-ish) 模式。这是由 find
解释的,而不是由 shell 解释的,因此引用它来避免由 shell 解释并不一定足够。
在您的特定情况下,
find
会将所需文件名的[Proper]
部分解释为字符类而不是文字。 您可以通过 printf %q
传递文件名,并引用结果以避免 shell 对其进行反引号,从而获得适当的文件名引用:
find -name "$(printf %q "$name")"