我正在完成一项学校作业,它基本上是基于一桩谋杀案。我下载了自定义文件,目前正在文件中搜索关键字。我现在要回答的问题是:“查找包含文本“apt. no.”的文件以找到该信息“。
我对 Linux 还很陌生,目前Permission Denied
每当我输入以下命令时都会得到:
grep -inr apt.no
任何关于如何修复此问题的帮助都将不胜感激。我正在寻找的文件包含apt.no
文本。
bbcharlieca@myvm:~$ grep -inr apt.no.
.viminfo:92:|2,1,1635317358,47,"apt.no"
.viminfo:92:|2,1,1635317355,47,"apt.no"
grep: nano.save: Permission denied
bbcharlieca@myvm:~$ █
答案1
标志-r
指示grep
它搜索当前目录和所有子目录中的每个文件。(您可以通过阅读文档了解有关-r
、-i
- 和 的信息。)-n
man grep
该命令apt.no.
在文件中匹配.viminfo
,并打印匹配的行。请注意,在您的文本中,您说要搜索,apt.no
但在您的屏幕截图中(呃;最好复制并粘贴为文本),您实际上输入了apt.no.
一个尾随的点。此外,您的说明似乎希望您搜索apt. no.
(带有空格)。请注意,对于grep
,点是一个通配符,它将匹配任意字符,如果你正在搜索包含空格的文本必须*放在引号内。也许您是想运行此命令,它会查找apt. no.
没有任何通配符匹配的文字字符串?
grep -rF 'apt. no.'
您grep
还尝试搜索文件nano.save
,但该文件似乎不属于您,或者您已删除了对它的读取权限。如果该文件位于您自己的主目录下,您可能可以安全地删除此文件 ( rm nano.save
)。如果它位于共享区域中,您要么必须忍受错误消息,要么明确将其从 中排除grep
,要么告诉 shell 放弃全部命令的错误信息:
grep -Fr 'apt. no.' # Live with it
grep -Fr --exclude='nano.save' 'apt. no.' # Exclude named file
grep -Fr 'apt. no.' 2>/dev/null # Discard *all* error messages
如果您具有 root 权限,则可以使用这些权限进行搜索,但跳转到 root 级别时应小心谨慎;如果您以 root 身份运行,则几乎没有任何限制:
sudo grep -Fr 'apt. no.' # Run as root
* 如果不放在引号中,则需要转义每个特殊字符,例如空格。这里我不打算这样做。