find - 掌握Linux搜索文件的正确姿势
Synopsis: which命令在PATH系统变量所指定的路径中搜索第一个匹配的结果,即查询某命令是否存在,它的具体执行路径是什么。whereis命令在/usr/bin或/usr/sbin等特定目录中查找文件。which和whereis都只是在指定目录中而非整个文件系统中查找文件,所以速度很快。locate则是在系统自动构建的索引数据库中模糊查找,当你记不清完整文件名时,使用locate查找很方便,缺点是索引并不是实时更新的。find命令可以指定精确的查询条件,比如模糊的文件名、文件类型、文件大小、文件权限、文件的时间戳、文件属主或属组、甚至还支持正则表达式,可以说是非常强大的搜索工具,缺点是速度较慢
1. which
which
命令在PATH
系统变量所指定的路径中搜索第一个匹配的结果,即查询某命令是否存在,它的具体执行路径是什么
# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # which passwd /usr/bin/passwd
2. whereis
whereis
命令在/usr/bin
或/usr/sbin
等特定目录中查找文件
# whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz # whereis -m passwd passwd: /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz 从哪些目录中查找呢? # whereis -l bin: /usr/bin bin: /usr/sbin bin: /usr/lib bin: /usr/lib64 bin: /etc ...
3. locate
如果当前系统存在大量的文件,更新全文件系统的索引数据库非常消耗系统资源,而更新是由cron
周期性执行updatedb
命令。如果你想查找刚添加不久的文件可能没有查询结果,需要手动执行一次该命令,它会根据配置文件/etc/updatedb.conf
去更新默认的索引数据库/var/lib/mlocate/mlocate.db
常用选项与参数:
-i
忽略大小写的差异-c
不输出文件名,仅计算找到的文件数量-l
仅输出几行的意思,例如输出五行则是 -l 5-S
输出 locate 所使用的数据库相关信息,包括文件和目录的数量等-r
后面可接正则表达式的模式
1. 列出 locate 当前使用的信息库 # locate -S Database /var/lib/mlocate/mlocate.db: 10,472 directories 99,482 files 5,524,776 bytes in file names 2,263,811 bytes used to store database 2. 查找文件名中包含 passwd 字符的文件,只显示5条记录 # locate -l 5 passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /root/Python-3.5.2/Lib/test/keycert.passwd.pem
4. find
基本格式为 find [指定路径] [指定条件] [指定动作]
,默认会查找当前目录及子目录,默认动作是 -print
把结果输出到屏幕上
4.1 查询条件
(1) -name PATTERN
根据文件名查找
要查找的 PATTERN
基于bash的 file globing
的匹配字符
?
任意单个字符*
任意长度、任意字符[set]
范围内任意字符[^ set]
[! set]
范围外任意字符brace expansion
大括号展开,比如/tmp/{a,b,c}
对应/tmp/a
或/tmp/b
或/tmp/c
-iname PATTERN
忽略字符大小写;-inode n
按 inode 号查找;-links n
: 链接数为 n 的文件
(2) -type [bcdpfls]
根据文件类型查找
b
块设备c
字符设备d
目录文件p
命名管道f
普通文件l
符号链接s
套接字文件
(3) -size N[bcwkMG]
根据文件大小查找
File uses n units of space. The following suffixes can be used:
b
for 512-byte blocks (this is the default if no suffix is used)c
for bytesw
for two-byte wordsk
for Kilobytes (units of 1024 bytes)M
for Megabytes (units of 1048576 bytes)G
for Gigabytes (units of 1073741824 bytes)
默认单位是字节,这里的文件大小有一个单位的浮动,因为元数据的存在 -size -N : 查找大小为 N 个字节以下的文件[0, N-1] -size N : 查找大小刚好等于 N 个字节的文件(N-1, N] -size +N : 查找大小为 N 个字节以上的文件(N, +∞) 比如-size -5M代表[0, 4M], -size 5M代表(4M, 5M], -size +5M代表(5M, +∞)
0 条评论
评论者的用户名
评论时间暂时还没有评论.