使用 find 搜索包含单词的文件

使用 find 搜索包含单词的文件

我想使用 find 命令查找系统上所有包含单词 fsck 的文件。

我试过

find / -iname fsck

然后它开始搜索文件,但所有内容都被拒绝权限。当我尝试使用sudo命令行执行时,它似乎挂起了。

我这样做对吗?我真的不知道该怎么做。

答案1

只是为了确保这是一个拼写错误,我看到您的命令是 fckd 而不是 fsck。

通常我会这样做:

find / -iname '*fsck*'

如果命令需要很长时间才能完成,我不会感到惊讶,但它应该显示它看到的结果。

最主要的是,您需要将模式设置为像使用“ls”那样的全局模式。

将模式放在单引号中,这样您的 shell 就不会在运行 find 命令之前尝试将 *fsck* 扩展为当前目录中的匹配文件列表。例如,如果您当前目录中没有与 *fsck* 匹配的文件,则运行的命令最终将是:

find / -iname

或者如果你当前目录中有 3 个文件 [ fsck.a fsck.b fsck.c ],则命令运行最终会变成

find / -iname fsck.a fsck.b fsck.c

通过转义或引用 *fsck*,命令最终会按照您预期的那样结束:

find / -iname *fsck*

我相信您也可以使用 \*fsck\* 来转义 *。

希望有所帮助。

答案2

或者,对于文本之内文件正如 muru 指出的那样,但我没有(感谢)声誉点数来跟进。

grep -sinIR fsck *为了G局部搜索r常规xpression 和印——s抑制错误,忽略大小写,返回行n数字,忽略二进制文件,然后执行R递归地, *目录中的所有文件

正如 sparhawk 指出的那样,locate这是一个方便的工具。 locate -i nAmE忽略大小写,-A对于多个搜索词,例如,它将返回名称中locate -iA fsck txt包含fsck和的所有文件txt使用更新的数据库

答案3

查找以下文件包含fsck,您需要使用通配符。

find / -iname '*fsck*'

您说得对,sudo 是必需的。它之所以“挂起”,是因为它需要遍历整个文件系统,这需要很长时间。或者,我建议使用locate,它使用预编译的索引,因此速度要快得多。此索引通常由 cronjob 定期更新,但您可以确保它是最新的

sudo updatedb

然后你可以使用以下方式搜索文件

sudo locate fsck

相关内容