一、文件搜索命令 - find
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
功能描述:文件搜索
语法:find [搜索范围] [匹配条件]
常用参数:
参数名称 | 作用 |
-name | 按名称查找 |
-size | 按大小查找(+:大于 -:小于 =:等于) 注:这里需要注意下单位, 单位是数据块,一个数据块的大小为512字节,所以1M=2个数据块 |
-user | 按属性查找 |
-type | 按类型查找,想知道有哪些文件类型, 可以参考:一、Linux 文件以及目录的讲解 |
-iname | 忽略大小写 |
举例:
# 在 “/root/demo” 目录下有以下文件
[root@TR demo]# ll
total 8
-rw-r--r-- 1 root root 0 Jan 6 19:55 压缩文件.tar.gz
-rwxr-xr-x 1 root root 0 Jan 6 19:55 可执行文件
-rw-r--r-- 1 root root 0 Jan 15 15:26 文件
-rw-r--r-- 1 root root 35 Jan 6 22:34 文件.txt
-rw-r--r-- 1 root root 0 Jan 15 15:25 文件TXT
drwxr-xr-x 2 root root 4096 Jan 6 19:54 文件夹
lrwxrwxrwx 1 root root 14 Jan 6 20:19 链接文件 -> /tmp/demo.soft
# 1. 查询文件名为“文件”的文件,可以看到并没有找到另外几个有“文件”关键字的文件,
# 是一个精确查询。
[root@TR demo]# find /root/demo -name 文件
/root/demo/文件
[root@TR demo]#
# 2. 如果想模糊匹配, 就需要使用通配符“*”
[root@TR demo]# find /root/demo -name "*文件*"
/root/demo/文件.txt
/root/demo/文件夹
/root/demo/链接文件
/root/demo/文件TXT
/root/demo/文件
/root/demo/压缩文件.tar.gz
/root/demo/可执行文件
[root@TR demo]#
# 3.如果想查询以“txt”结尾的文件呢,可以看到并没有吧“文件TXT”文件查询出来
# 那是因为没有忽略大小写
[root@TR demo]# find /root/demo -name "*txt"
/root/demo/文件.txt
[root@TR demo]#
# 4.查询以“txt”结尾的文件(不区分大小写)
[root@TR demo]# find /root/demo -iname "*txt"
/root/demo/文件.txt
/root/demo/文件TXT
[root@TR demo]#
1、除了上述的查询, find 还可以查询一定时间内, 被修改,访问的文件
参数 | 作用 |
-amin | 访问时间(access) |
-cmin | 文件属性被修改(change) |
-mmin | 文件内容被修改(modify) |
# 1.查询30分钟内被访问(access)过的文件
[root@TR demo]# find /root/demo -amin -30
/root/demo/文件.txt
[root@TR demo]#
# 2.查询30分钟内被修改(modify)的文件
[root@TR demo]# find /root/demo -mmin -30
/root/demo
/root/demo/文件.txt
[root@TR demo]#
# 3.查询30分钟内被修(change)改属性的文件
[root@TR demo]# find /root/demo -cmin -30
/root/demo
/root/demo/文件.txt
[root@TR demo]#
注:如果 将上述的“min” 换成“time”, 那是时间单位就有分钟切换成天了
例如:查询超过七天内被访问过的所有文件
[root@TR demo]# find /root/demo -type f -atime +7
2、查询一个文件的属性范围
例1:查询一个文件的大小在 100M到200M之间。
# 1. “-a” 表示 “and” +:表示大于 -:表示小于
[root@TR demo]# find /root/demo -size +204800 -a -size -409600
例2:查询一个文件的大小 大于100M 或者 小于 200M
# 1. “-o” 表示 “or” +:表示大于 -:表示小于
[root@TR demo]# find /root/demo -size +204800 -o -size -409600
3、对搜索结果执行操作
这个很有趣, 可以使用 “-exec” 或者“-ok” 来对搜索出来的执行操作
例如:想查看搜索出来的文件的详细信息
[root@TR demo]# find /root/demo -name "*文件" -exec ls -l {} \;
lrwxrwxrwx 1 root root 14 Jan 6 20:19 /root/demo/链接文件 -> /tmp/demo.soft
-rw-r--r-- 1 root root 0 Jan 15 15:26 /root/demo/文件
-rwxr-xr-x 1 root root 0 Jan 6 19:55 /root/demo/可执行文件
[root@TR demo]#
二、文件搜索命令 - locate
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
功能描述:在文件资料库中搜索文件
语法:locate [文件名]
例如:查询文件名为含有“压缩”关键字的文件
[root@TR demo]# locate "*压缩*"
/root/demo/压缩文件.tar.gz
[root@TR demo]#
扩展:如果上述命令报“locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory”错, 那么只需要输入“updatedb”命令等待执行完毕即可。
find 和 locate的区别
- find是实时查询,对系统性能消耗较高;而locate是查询文件资料库,查询很快, 但是会有查询不出来的情况(文件内容信息还未更新进“mlocate.db”数据库中)。
- find 查询文件需要带上路径,而locate 直接输入文件名即可。
三、文件搜索命令 - which
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
功能描述:搜索命令所在目录以及别名信息
语法:which [命令]
例如:查询 “ls” 命令的所在目录以及别名信息
[root@TR demo]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@TR demo]#
四、文件搜索命令 - whereis
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
功能描述:搜索命令所在目录以及帮助文档路径
语法:whereis [命令]
例如:查询 “ls” 命令的所在目录以及帮助文档路径
[root@TR demo]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@TR demo]#
五、文件搜索命令 - grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
功能描述:在文件中搜寻字符串匹配的行,并输出
语法:whereis [-iv] [执行字符串] [文件]
参数 | 作用 |
-i | 不区分大小写 |
-v | 排除指定字符串 |
例如:查询“文件.txt”中含有“胖太乙”的关键字
[root@TR demo]# cat 文件.txt
姓名:胖太乙
年龄:1000岁
[root@TR demo]# grep "胖太乙" /root/demo/文件.txt
姓名:胖太乙
[root@TR demo]#