例如,我需要打印所有包含单词 的用户文件的路径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 -c
和echo
。)
我尝试使用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 只是为了在这个例子中格式化而添加换行符,这绝不是必需的