我想使用 find 命令,并且只在控制台中输出 find 命令实际找到的文件及其路径。因为如果我现在使用该命令,它还将显示它检查的所有文件。
我使用的命令是:
find idle /* > find_idle.txt
在我看来,它只是输出它搜索到的所有内容。它不会给我任何带有“空闲”的文件的点击。我是 Linux 初学者。
答案1
尝试运行:
grep -r idle /
这是有效的,但您可能会注意到一个问题。/proc
例如,您不想在虚拟文件系统中搜索文件。它可能会卡住,需要很长时间,或者只包含您不感兴趣的特殊类型文件的结果。
如果您需要在 下搜索/
,您需要类似:
find / -xdev -type f -exec grep -H idle '{}' +
/*
将跳过顶层的“隐藏”文件和目录。如果你没有这样一个非常具体的目标,就不要把它放在*
最后。find
不搜索文本文件中的字符串。它有多种选择。find / -name idle
将找到名为的文件idle
并打印其完整路径。find path-a path-b
列出路径 a 和路径 b 下预期存在的所有文件。$ find path-a path-b find: ‘path-a’: No such file or directory find: ‘path-b’: No such file or directory
find -xdev
避免进入不同的文件系统,例如/proc
.如果/home
是不同的文件系统,您可能需要find / /home -xdev ...
改为。find -type f
过滤掉目录和其他一些特殊文件。find -exec
允许使用该文件名运行另一个程序。使用+
specially一次性传递一批文件名,效率更高。
答案2
Windows 命令行和 Unix 命令行完全不同。了解 Windows 命令行实用程序对您在 Unix 上没有帮助,反之亦然。另一方面,Linux 和 macOS 等 Unix 变体之间有很多共同点,了解其中一个变体将对您了解其他变体有所帮助。
巧合的是,Windows 和 Linux 都有一个名为 的实用程序find
。但他们做的事情完全不同。您的问题最初在这里没有得到很好的接受,因为没有人想象您期望调用一个命令来find
搜索文件的内容。 Unixfind
实用程序根据元数据搜索文件:名称、位置、修改时间等。它不查看文件内容。
搜索文件内容的 Unix 命令是grep
。它的主要重点是搜索文件内部,但现代版本grep
可以指示自动遍历目录并搜索其中的所有文件。要idle
在当前目录中查找包含该字符串的文件:
grep idle *
该*
字符是通配符模式,由 shell 扩展到当前目录中的文件列表。这是在 Windows 中工作方式基本(但不完全)相同的极少数功能之一。失去这样的习惯*.*
:排除名称中包含 a 的文件.
(与 Windows 不同,由于历史原因,这种模式有特殊的魔力)。*
确实排除点文件但这是另一个故事了。该命令不搜索子目录中的文件;要做到这一点:
grep -r idle .
在这里,我们不依赖 shell 来列出文件,因为grep
它会自行完成。
如果你想在整个系统上查找文件,你可以使用
grep -r idle /
但这会搜索许多系统文件,所以你可能不想要这个。看sourcejedi的回答非常好关于这个话题。
如果您只想搜索单词“idle”,而不是当它是“idle”或“side”等单词的子字符串时,请将选项传递-w
给grep
:
grep -w idle *
如果您想在任何情况下搜索“idle”(Idle
, IDLE
, iDle
, ...),请传递-i
:
grep -i idle *
一般来说,如果您正在寻找执行某些操作的命令,网络搜索是您最好的朋友。有一些方法可以搜索系统上命令的文档,但它们通常效率较低:您必须对自己正在寻找的内容有所了解。一旦您知道命令名称,您就可以使用该命令查找其文档man
,例如man grep
或man find
。我推荐阅读如何使用手册页来学习如何使用命令?。手册页通常是干巴巴的总结,假设您大致了解自己在做什么,但忘记了细节,因此请毫不犹豫地查阅其他资源。