linux命令:文件搜索命令
---恢复内容开始---
文件搜索命令:which
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which [命令名称]
功能描述:显示系统命令所在目录,以及别名记录
范例:$which ls
一切皆文件:命令根据权限(路径)可分为两类:1,root /sbin /usr/sbin 2,普通路径 /bin /usr/bin
此命令可根据查找的命令所在的路径判断其权限。
whereis [命令名称]
与which类似
可以显示系统命令的所在路径以及帮助文档(所在文档)
尽管可以搜索,但应该减少搜索,占用太多资源。所以服务器的规划应该有条理的规划。
文件搜索命令:find
命令名称:find
命令所在路径:/usr/bin/find
执行权限:所有用户
语法:find [搜索路径] [搜寻关键字]
功能描述:查找文件或目录(任意)
范例:
$find /etc -name init 在目录/etc中查找文件或目录init,精准的搜索。
$find / -size +204800 在根目录下查找大于100MB的文件或目录
$find /home -usr samlee 在根目录下查找所有者为samlee的文件或目录
-name 根据文件名查找
在根目录下查找,会遍历整个硬盘,占用大量资源,应避免。
当只记得文件名一部分时,可以使用通配符,常用的通配符有两个
一个是 * 匹配任意字符,包括零个字符
比如要查找以init开头的文件或目录,则init*则可
若要查找包含init的文件或目录,则*init*则可
另一个是? 匹配单个字符 比如文件或目录名含7个字符,只记得前4个,则可用init???则可
总之在查询时要尽可能的精确路径,精确关键词。节省系统资源,占用系统资源越少越好。
linux严格区分大小写。不区分用 -iname 只是在搜索是不区分大小写。
-size 根据文件大小查找 大多数linux以block数据块 512字节=0.5kb(基本通用)
100MB=? block
100MB=102400KB=204800block
大于 +204800
小于 -204800
等于 204800
-user 根据文件所有者查找
-group根据文件所属组查找
另外是根据时间查找
1,天 ctime atime mtime
2,分钟 cmin amin mmin
c-change改变,表示文件的属性被修改过,所有者,所属组,权限。-l所显示的
a-access 访问,表示被人查看过
m-modify修改,表示文件内容被修改过
- 表示多长时间之内,如-1
+ 超过
$find /etc -mmin -120 在120分钟内被修改过内容的文件有哪些。
$find /etc -ctime -1 在/etc下查找24小时内被修改过程属性的文件和目录
1.连接符 -a and逻辑与 -o or逻辑或
$find /etc -size +163840 -a -size -204800 在/etc下查找大于80MB小于100MB的文件
$find /etc -name init* -a -type(类型) f(二进制文件) 在/etc目录下查找init开头且类型为二进制文件的文件
$find /etc -name init* -a -type l(软连接文件)在/etc目录下查找init开头且类型为软连接的文件
-type 意为文件类型 f 二进制文件 l 软连接文件 d 目录
$find /etc -name init* or -size +204800 在/etc下查找以init开头或大小大于100MB的文件或目录
2.连接符 find ...... -exec 命令 {} \;
{}表示前面find查询的结果
/ 表示一个转义符(符号命令使用本身的含义)
;表示结束
注意三者之间有空格
$rm testfile
rm: remove regular cmpty file ‘testfile’? Y
$ which rm
alias rm=’rm -i’ //这也就是所说的别名,而\的使用则使其变成最原始的rm无-i选项
/bin/rm
$ \rm tesyfile //此时直接删除
$
;则表示语句的结束
$find /etc -name inittab -exec ls -l {} \; 查看/etc目录下inittab的详细信息
$find /etc -name testfile3 -exec rm {}\;将/etc下的testfile3文件直接删掉
$find /test -name test -exec ls -l {} \;将/test下的test文件列出详细信息
连接符 -ok(询问输入)
$find /etc -name inittab -ok ls -l {} \;意为查找到目标文件后,询问是否执行ls
$find /etc -name inittab -ok rm {} \;当后面的命令为rm时显得至关重要,询问是否移除。
$find /etc -name init* -a -type f -exec ls -l {} \;意为列出/etc下的以init开头的二进制文件的详细信息
另外的选项:根据i节点查找 无论文件名多奇怪,它总有一个i节点。i节点可以映射到多个文件,所以硬连接可以更新。
ls -i 便可列出此目录下文件的i节点
只要获得i节点便可利用find命令进行删除
例如:
无论发现何等奇异名字的文件,都可通过find查找i节点的方法来进行删除。
-inum 根据i节点查找
find . -inum 31531 -exec rm {} \ .
文件搜索指令:locate
指令名称:locate
指令英文原意:list files in databeses
指令所在路径:/usr/bin/locate
执行权限:all user
语法:locate [搜索关键字]
功能描述:寻找文件或目录在文件库中。此命令十分快,是因为建立了一个资料库。只是在资料库中找,并没有在硬盘上找。
范例:$locate file
列出所有和file相关的文件
locate经常查找一些系统默认安装的命令,配置文件等。
此命令在unix下一般不提供,只在linux下提供。
locate与find不同,find是在目录下查找,locate是在定期更新的数据库中查找所以速度非常快,locate经常和命令updatedb配合使用
新的文件建立后,资料库不会及时更新。
文件搜索指令:updatedb
指令英文原意:update the slocate database
指令所在路径:/usr/bin/updatedb
执行权限:root
语法:updatedb
功能描述:建立整个系统目录文件的数据库
范例:#updatedb
当建立新文件,而新文件没有录入数据库时,通过locate则不能查找到
在linix系统下会有个计划任务定期执行updatedb
注意在/temp文件夹下的所有文件并不会被收录在资料库其中。
-i不区分大小写
文件搜索命令:grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep [指定字串] [源文件]
功能描述:在文件中搜寻字串匹配的行并输出
范例:#grep ftp /etc/services 所有和ftp相关的行输出出来
/etc/services 存放了所有网络协议对应的端口和信息
同样 -i不区分大小写。
-v 去掉 含#的行 grep -v ^# /etc/inittab ^表示行首。
---恢复内容结束---
文件搜索命令:which
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which [命令名称]
功能描述:显示系统命令所在目录,以及别名记录
范例:$which ls
一切皆文件:命令根据权限(路径)可分为两类:1,root /sbin /usr/sbin 2,普通路径 /bin /usr/bin
此命令可根据查找的命令所在的路径判断其权限。
whereis [命令名称]
与which类似
可以显示系统命令的所在路径以及帮助文档(所在文档)
同时会显示别名。如rm = rm -i 询问是否删除。
文件搜索命令:find
命令名称:find
命令所在路径:/usr/bin/find
执行权限:所有用户
语法:find [搜索路径] [搜寻关键字]
功能描述:查找文件或目录(任意)
范例:
$find /etc -name init 在目录/etc中查找文件或目录init
$find / -size +204800 在根目录下查找大于100MB的文件或目录
$find /home -usr samlee 在根目录下查找所有者为samlee的文件或目录
-name 根据文件名查找
在根目录下查找,会遍历整个硬盘,占用大量资源,应避免。
当只记得文件名一部分时,可以使用通配符,常用的通配符有两个
一个是 * 匹配任意字符,包括零个字符
比如要查找以init开头的文件或目录,则init*则可
若要查找包含init的文件或目录,则*init*则可
另一个是? 匹配单个字符 比如文件或目录名含7个字符,只记得前4个,则可用init???则可
总之在查询时要尽可能的精确路径,精确关键词。节省系统资源,占用系统资源越少越好。
-size 根据文件大小查找 大多数linux以block数据块 512字节=0.5kb(基本通用)
100MB=? block
100MB=102400KB=204800block
大于 +204800
小于 -204800
等于 204800
-user 根据文件所有者查找
另外是根据时间查找
1,天 ctime atime mtime
2,分钟 cmin amin mmin
c-change改变,表示文件的属性被修改过,所有者,所属组,权限。
a-access 访问,表示被人查看过
m-modify修改,表示文件内容被修改过
- 表示多长时间之内,如-1
+ 超过
$find /etc -mmin -120 在120分钟内被修改过内容的文件有哪些。
$find /etc -ctime -1 在/etc下查找24小时内被修改过程属性的文件和目录
1.连接符 -a and逻辑与 -o or逻辑或
$find /etc -size +163840 -a -size -204800 在/etc下查找大于80MB小于100MB的文件
$find /etc -name init* -a -type(类型) f(二进制文件) 在/etc目录下查找init开头且类型为二进制文件的文件
$find /etc -name init* -a -type l(软连接文件)在/etc目录下查找init开头且类型为软连接的文件
-type 意为文件类型 f 二进制文件 l 软连接文件 d 目录
$find /etc -name init* or -size +204800 在/etc下查找以init开头或大小大于100MB的文件或目录
2.连接符 find ...... -exec 命令 {} \;
{}表示前面find查询的结果
/ 表示一个转义符(符号命令使用本身的含义)
$rm testfile
rm: remove regular cmpty file ‘testfile’? Y
$ which rm
alias rm=’rm -i’ //这也就是所说的别名,而\的使用则使其变成最原始的rm无-i选项
/bin/rm
$ \rm tesyfile //此时直接删除
$
;则表示语句的结束
$find /etc -name inittab -exec ls -l {} \; 查看/etc目录下inittab的详细信息
$find /etc -name testfile3 -exec rm {}\;将/etc下的testfile3文件直接删掉
$find /test -name test -exec ls -l {} \;将/test下的test文件列出详细信息
连接符 -ok(询问输入)
$find /etc -name inittab -ok ls -l {} \;意为查找到目标文件后,询问是否执行ls
$find /etc -name inittab -ok rm {} \;当后面的命令为rm时显得至关重要,询问是否移除。
$find /etc -name init* -a -type f -exec ls -l {} \;意为列出/etc下的以init开头的二进制文件的详细信息
另外的选项:根据i节点查找 无论文件名多奇怪,它总有一个i节点。i节点可以映射到多个文件,所以硬连接可以更新。
ls -i 便可列出此目录下文件的i节点
只要获得i节点便可利用find命令进行删除
例如:
无论发现何等奇异名字的文件,都可通过find查找i节点的方法来进行删除。
文件搜索指令:locate
指令名称:locate
指令英文原意:list files in databeses
指令所在路径:/usr/bin/locate
执行权限:all user
语法:locate [搜索关键字]
功能描述:寻找文件或目录
范例:$locate file
列出所有和file相关的文件
locate经常查找一些系统默认安装的命令,配置文件等。
此命令在unix下一般不提供,只在linux下提供。
locate与find不同,find是在目录下查找,locate是在定期更新的数据库中查找所以速度非常快,locate经常和命令updatedb配合使用
文件搜索指令:updatedb
指令英文原意:update the slocate database
指令所在路径:/usr/bin/updatedb
执行权限:root
语法:updatedb
功能描述:建立整个系统目录文件的数据库
范例:#updatedb
当建立新文件,而新文件没有录入数据库时,通过locate则不能查找到
在linix系统下会有个计划任务定期执行updatedb
文件搜索命令:grep
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep [指定字串] [源文件]
功能描述:在文件中搜寻字串匹配的行并输出
范例:#grep ftp /etc/services 所有和ftp相关的行输出出来
/etc/services 存放了所有网络协议对应的端口和信息