Shell 查找准确的文件名(文字)

问题描述 投票:0回答:1

如何在没有表达式/正则表达式的情况下按名称查找文件,只需精确的给定名称/名称的一部分? 我将它与变量一起使用,因此可能存在特殊字符,无法进行搜索。 我使用scratch,但不喜欢它,需要明确的find/ls

find | grep -F "$name"

使用 GNU 查找

不起作用的例子

name="Poweramp v3 Skin Liv Dark -  v1.7 [Proper]"
find -name "$name"
bash shell search find
1个回答
0
投票

find
-name
谓词将其参数解释为 glob(-ish) 模式。这是由
find
解释的,而不是由 shell 解释的,因此引用它来避免由 shell 解释并不一定足够。

在您的特定情况下,

find
会将所需文件名的
[Proper]
部分解释为字符类而不是文字。 您可以通过
printf %q
传递文件名,并引用结果以避免 shell 对其进行反引号,从而获得适当的文件名引用:

find -name "$(printf %q "$name")"
© www.soinside.com 2019 - 2024. All rights reserved.