如果文件内容匹配,如何使用“find”而不是“grep”来打印路径

如果文件内容匹配,如何使用“find”而不是“grep”来打印路径

例如,我需要打印所有包含单词 的用户文件的路径hello

必须使用find

使用find命令搜索并grep打印路径:

find ~ -type f -exec grep -lis "hello" '{}' \;

使用命令进行搜索find,并使用命令打印路径echo

find ~ -type f -exec sh -c 'grep -qis "hello" {} && echo {}' \; 2> dev/null

现在的问题是:

如何编写使用以下命令打印文件路径仅有的 find? (grep可以用来匹配字符串hello,但不能用来打印文件路径。并且不能使用sh -cecho。)

我尝试使用find ~ -type f -exec grep -qis "hello" '{}' \; -printf "%s"find ~ -type f -exec grep -qis "hello" '{}' \; -print但它不会输出结果(在 Ubuntu 上)。

有人帮忙吗?

答案1

由于您声明 -print 对您不起作用,因此可以使用 -printf 返回完整的文件路径。

find ~ -type f -exec grep -qis "hello" '{}' \; -printf "%p\n"

根据find 的手册页

%p 将打印文件的名称(在这种情况下实际上是绝对路径)

\n 只是为了在这个例子中格式化而添加换行符,这绝不是必需的

相关内容