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 存放了所有网络协议对应的端口和信息

上一篇:HDU 5437 Alisha’s Party (优先队列)——2015 ACM/ICPC Asia Regional Changchun Online


下一篇:优先队列 + 模拟 - HDU 5437 Alisha’s Party