Linux grep 或 find 用法

Linux grep 或 find 用法

如何在硬盘上查找以 开头的文件io_file

我试过:

grep -r io_file*` 

find -name io_file*

find没有返回任何东西,而grep似乎花了很长时间却没有任何结果。

我究竟做错了什么?

答案1

find / -name 'io_file*'

第一个参数将指定搜索的起始位置。/表示整个硬盘。若要仅在当前目录(及其子目录)中搜索,请使用:find .

如果搜索字符串包含 shell 元字符(例如星号),则必须用引号引起来。否则,它将被 shell 解析,并且永远不会被 看到find

答案2

find / -name 'io_file*' -type f 2>/dev/null



   /: Start looking from root directory

   -type f: Only search for regular files

    2>/dev/null: Redirect errors to /dev/null. (handy if you are not root and
                 not interested in all the "access denied" messages)

请记住,grep 和 find 的作用不同。

grep 在指定的输入文件 (如果没有指定文件或给出文件名 - 则搜索标准输入) 中查找与给定模式匹配的行。默认情况下,grep 会打印匹配的行。

寻找- 在目录层次结构中搜索文件

答案3

在我看来,使用 find 搜索整个硬盘的速度很慢(访问不属于您的文件时,它还会显示很多权限错误)。如果可能,请使用locate:

locate -b 'io_file*'

如果文件比 24 小时新,您可能需要重新索引(通常它会设置每日 cronjob):

sudo updatedb

答案4

命令

# set -x

将在 shell 扩展后打印命令,以便你可以看到正在发生的事情

# find . -name letter.*
+ find . -name letter.rtf

...现在您可以看到 shell 正在将参数名称扩展为letter.rtf,因为我的当前目录包含一个letter.rtf与模式匹配的文件。

引用该模式(在这种情况下双引号也有效)将停止 shell 扩展

# find . -name 'letter.*'
+ find . -name 'letter.*'

要关闭它,请使用

# set +x

您还可以-x使用舍邦线查看 shell 脚本正在做什么,这可以极大地帮助调试。

#!/bin/bash -x

相关内容