列出包含(在其名称、目录或内容中)特定(子)字符串的所有常规文件

列出包含(在其名称、目录或内容中)特定(子)字符串的所有常规文件

就像标题中一样,我也想打印每个(文本)文件中子字符串出现的行号。

到目前为止我已经:

find /sys | grep "filesystem"

但它似乎只查看文件的名称和目录,而不查看其内容。

以及如何同时搜索多个字符串?因为我认为我应该另外搜索"*filesystem","filesystem*""*filesystem*"包括该字符串的所有可能出现的情况。

先感谢您。

答案1

如果您不介意对文件名和内容使用两个不同的命令,那么以下命令将对您有所帮助。

find /sys -name "*filesystem*"

上面的命令将查找所有以“filesystem”作为文件名/目录名一部分的文件/目录。

grep -rn "filesystem" /sys/*

上面的命令将递归地查找内容中包含“filesystem”的所有文件,并打印出行号以及匹配的行。如果您只想打印行号而不打印内容,可以使用以下过滤器。您可以将 2 替换为您要打印的列号。

grep -rn "filesystem" /sys/* | awk -F":" {'print $2'}

相关内容