文件查找和比较
1、locate/slocate命令
locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
选项:
-d<目录>或--database=<目录>:指定数据库所在的目录;
-u:更新slocate数据库;
--help:显示帮助;
--version:显示版本信息。
例子:
搜索etc目录下所有以sh开头的文件:
locate /etc/sh
搜索用户主目录下,所有以m开头的文件:
locate ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写:
locate -i ~/m
ps:centos7 默认没有locate命令,需要输入“yum install mlocate”命令安装,安装完成后,输入“updatedb”更新数据库
2、diff命令
diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作
选项参考网站:
例子:
将目录/usr/liangxj_pratice/logFile/下的文件"application.properties"与当前目录下的文件"application.properties"进行比较
diff /usr/liangxj_pratice/logFile/ application.properties
ps:还有个可以对比三个文件的命令:
3、find命令
查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行)。x命令是删除当前光标下的字符,如果指定count作为参数,则是向右查找count个字符并删除,而x命令是删除当前光标前的一个字行,如果指定count作为参数,则是向左查找count个字符并删除.。-type 查找某一类型的文件,诸如:b - 块设备文件,d - 目录,c - 字符设备文件,p - 管道文件linux常用命令,l - 符号链接文件,f - 普通文件。
选项参考网站:
例子:
根据文件或者正则表达式进行匹配
列出当前目录及子目录下所有文件和文件夹
find .
在/home目录下查找以.txt结尾的文件名
find /home -name "*.txt"
同上,但忽略大小写
find /home -iname "*.txt"
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . \( -name "*.txt" -o -name "*.pdf" \) 或 find . -name "*.txt" -o -name "*.pdf"
匹配文件路径或者文件
find /usr/ -path "*local*"
基于正则表达式匹配文件路径
find . -regex ".*\(\.txt\|\.pdf\)$"
同上,但忽略大小写
find . -iregex ".*\(\.txt\|\.pdf\)$"
否定参数
找出/home下不是以.txt结尾的文件
find /home ! -name "*.txt"