使用“查找”命令时,在搜索词前后加上星号有什么意义?

使用“查找”命令时,在搜索词前后加上星号有什么意义?

在这里搜索词前后加星号有什么意义呢?

find ~ -name "*bash*"

到目前为止,我已经了解到星号表示查找前一个字符的零个或多个字符,那么它如何应用于这个命令,或者在这里完全不同?

答案1

如果没有它,您将要求 find 在您的 $HOME 目录 (~) 中搜索名为“bash”的文件;* 字符允许在“bash”之前和之后输入任何内容,这与单独的“bash”含义不同。

find ~ -name "bash"

会找到名为“bash”的文件,而不是 not my_bash_script。bash 前后的 * 会改变含义,并允许它找到名为bashand 的文件my_bash_script

答案2

您通过零个或多个字符指的是正则表达式 - 这是grep和等工具使用的高级模式匹配awk

在命令中,星号 ( *) 表示任意字符。该-name标志仅在执行该匹配时查看文件名。

波浪符号 ( ~) 表示用户的主目录,请注意 find 命令无法识别 if。调用该命令时,shell 将执行替换,调用该命令时将看到的内容类似于/home/jdoe

现在,find(作为递归命令)将遍历/home/jdoe(表示为~)和主目录的每个子目录,与bash其中包含单词的任何文件匹配,因此匹配的文件将是~/.bashrc~/.bashrc-local甚至~/Pictures/wabash_2019.png

现在,如果您确实想使用正则表达式,那么这将由标志处理-regex,其中此模式将意味着完全不同的东西,并且可能不会产生任何输出。我不会详细介绍正则表达式,因为关于这个主题有整本书。在这种情况下,正则表达式用于非常基本的模式匹配。

相关内容