Linux系统上如何快速查找一个文件

Linux系统上如何快速查找一个文件,第1张

linux系统上可以借助于locate命令来快速查找一个文件。因为locate命令搜索的是文件数据库,所以速度非常快。

1、使用locate命令需要及时更新文件数据库。可以借助于updatedb命令来更新文件数据库。

sudo updatedb

2、文件数据库更新完成后,可以直接使用locate命令进行搜索。

图片说明:locate是查找命令,myinit.sh是要查找的文件。

3、补充locate命令参数

用法: locate [OPTION]... [PATTERN]...

在mlocate数据库中搜索条目.

  -b, --basename         匹配唯一的路径名称的基本文件名

  -c, --count            只显示找到条目的号码

  -d, --database DBPATH  用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)

  -e, --existing         只显示当前存在的文件条目

  -L, --follow           当文件存在时跟随蔓延的符号链接 (默认)

  -h, --help             显示本帮助

  -i, --ignore-case      匹配模式时忽略大小写区别

  -l, --limit, -n LIMIT  限制为 LIMIT项目的输出 (或 计数) 

  -m, --mmap             忽略向后兼容性

  -P, --nofollow, -H     当检查文件时不跟随蔓延的符号链接

  -0, --null             输出时以 NUL 分隔项目

  -S, --statistics       不搜索项目,显示有关每个已用数据库的统计信息

  -q, --quiet            不报告关于读取数据库的错误消息

  -r, --regexp REGEXP    搜索基本正则表达式 REGEXP 来代替模式

      --regex            模式是扩展正则表达式

  -s, --stdio            忽略向后兼容性

  -V, --version          显示版本信息

  -w, --wholename        匹配完整路径名 (默认)

find,用于在文件树中查找文件并作相应的处理

-name:按照文件名查找文件

-perm:按照文件权限查找文件

-user:按照文件属主来查找文件

-size:按照指定的文件大小查找文件【+n:大于,-n:小于,n:等于】

-group:按照文件所属的组来查找文件

-mtime<-n><+n>:按照文件更改时间来查找文件,-n表示n天之内,+n表示n天以前

-newer file1 file2:查找更改时间在file1和file2之间的文件

例如:

find -mtime -2:查找48小时修改过的文件

find -name ".log":查找当前目录以".log"结尾的文件

find /opt/soft/test -perm 777:查找指定目录下权限为777的文件

find -type f -name "*.log":查找当前目录下以".log"结尾的普通文件

find -type d | sort:查找当前所有目标目录并排序

find /home/wansw -size +20M:查找大于20M的文件

locate指令,可以快速定位文件路径,利用事先建立的系统中的所有文件名称和路径的locate数据库,无需遍历整个文件系统,查询速度较快,为了保证查询准确性,需要定期更新。《Linux就该这么学》

updatedb:第一次运行前,创建locate数据库

grep,用于过滤/搜索指定字符串。可以使用正则表达式,能配合多种命令使用。

用法:grep 【选项】 查找内容 源文件

-A:显示符合的行及之后的内容

-B:显示符合的行及之前的内容

-C:显示符合的行及前后的内容

-c:计算符合的行数目

-n:显示匹配行和行号

-i:忽略大小写

规则表达式

:'grep'表示匹配所有以grep开头的行

'表示匹配所有以grep结尾的行

.:'gr.p'表示匹配'gr'后面接任意字符然后是'p'

:'grep'表示匹配一个或多个空格后紧跟grep的行

[]:[Gg]rep表示匹配Grep与grep

[]:[A-FH-Z]rep表示匹配不以A-F、H-Z开头并紧跟rep的行

例如(grep命令大多数时候多要和别的命令一起使用才有意义):

ps -ef | grep -c SVN:查找指定的进程的个数

cat test.txt | grep -f test2.txt:从text2.txt中读取关键字后在test.txt中搜索

cat test.txt | grep nf text2.txt:从text2.txt中读取关键字后在text.txt中搜索并显示行号

grep 'linux' text.txt test2.txt:从多个文件中搜索关键字'linux'

cat test.txt | grep -E 'ed|at':显示包含ed或at的行


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11841518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存