我想使用 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