使用 SSH 在整个 Ubuntu 机器上搜索单词

使用 SSH 在整个 Ubuntu 机器上搜索单词

如何使用 SSH 在整个 Ubuntu 计算机上的每个文件中搜索特定单词?

笔记:我正在使用 Windows 程序 PuTTY 来运行 SSH 会话,但是一旦连接,我就有了一个普通的 bash 会话。

下列的这个答案在 UL.SE 上,我使用了这个 bash 命令:

find / -xdev -type f -print0 | xargs -0 grep -H "search for this text"

但即使访问被拒绝或没有匹配项,此命令也会返回输出,并且由于 PuTTY 限制了可查看的会话历史记录,因此我无法看到所有结果。

我正在做一个捕获标志的挑战,我必须通过 SSH 连接到 Linux 机器,我想在整个机器上的每个文件中搜索字符串“flag”。我对 bash 及其命令的了解非常有限。

答案1

附加2> /dev/null到命令以隐藏错误。这称为重定向 stderr。因此,对于您的具体命令,它将是:

find / -xdev -type f -print0 | xargs -0 grep -H "search for this text" 2> /dev/null

但这非常冗长。你也可以:

grep -rw "flag"

grep(1)

       -r, --recursive
              Read all files under each directory, recursively, 
              following symbolic links only if they are on the 
              command line. Note that if no file operand is given, 
              grep searches the working directory.  This is 
              equivalent to the -d recurse option.

       -w, --word-regexp
              Select only those lines containing matches that form 
              whole words. The test is that the matching substring 
              must either be at the beginning of the line or preceded 
              by a non-word constituent character.  Similarly, it 
              must be either at the end of the line or followed by a 
              non-word constituent character.  Word-constituent 
              characters are letters, digits, and the underscore. 
              This option has no effect if -x is also specified.

请注意,这将在当前目录中的任何文件中查找单词“flag”。因此,如果您想搜索整个机器,请从 运行此命令/。如果您希望它不区分大小写,请添加-i.这样做的另一个优点是flagged不会找到类似的词。

用于grep -rw "flag" 2> /dev/null过滤掉所有这些Permission denied消息

相关内容