zoukankan      html  css  js  c++  java
  • Linux目录和文件——查询目录和文件的命令

    Linux目录和文件——查询目录和文件的命令

    摘要:本文主要学习了在Linux系统中是如何查询目录和文件的。

    which命令

    which命令是根据PATH环境变量设置的路径,去搜索执行文件。

    基本语法

    1 which [选项] 命令名称

    选项说明

    1 -a:列出所有的可以找到的同名执行文件。

    使用举例

    1 [root@localhost ~]# which ls
    2 alias ls='ls --color=auto'
    3     /usr/bin/ls
    4 [root@localhost ~]#

    type命令

    type命令用来显示指定命令的类型:

    1)alias:别名。

    2)keyword:关键字,Shell保留字。

    3)function:函数,Shell函数。

    4)builtin:内建(内嵌)命令,Shell内建命令。

    5)file:文件,磁盘文件,外部命令。

    6)unfound:未找到。

    基本语法

    1 type [选项] 命令名称

    选项说明

    1 -t:显示“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“别名”或者“内嵌指令”。
    2 -p:如果给出的指令为外部指令,则显示其绝对路径。
    3 -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

    使用举例

     1 [root@localhost ~]# type ls
     2 ls 是 `ls --color=auto' 的别名
     3 [root@localhost ~]# type -t ls
     4 alias
     5 [root@localhost ~]# type -p ls
     6 [root@localhost ~]# type -a ls
     7 ls 是 `ls --color=auto' 的别名
     8 ls 是 /usr/bin/ls
     9 [root@localhost ~]# type cd
    10 cd 是 shell 内嵌
    11 [root@localhost ~]# type -t cd
    12 builtin
    13 [root@localhost ~]# type -p cd
    14 [root@localhost ~]# type -a cd
    15 cd 是 shell 内嵌
    16 cd 是 /usr/bin/cd
    17 [root@localhost ~]# type useradd
    18 useradd 是 /usr/sbin/useradd
    19 [root@localhost ~]# type -t useradd
    20 file
    21 [root@localhost ~]# type -p useradd
    22 /usr/sbin/useradd
    23 [root@localhost ~]# type -a useradd
    24 useradd 是 /usr/sbin/useradd
    25 [root@localhost ~]# 

    whereis命令

    whereis命令用于在特定目录中查找符合条件的文件。

    whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。

    基本语法

    1 whereis [选项] 文件或目录

    选项说明

    1 -b:只搜索二进制文件。
    2 -m:只搜索man手册。
    3 -s:只搜索源代码。
    4 -u:搜索不是b、m、s指定目录的其他特殊目录。
    5 -l:列出会去查询的有效查找目录。

    使用举例

    1 [root@localhost ~]# whereis ls
    2 ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
    3 [root@localhost ~]# 

    find命令

    find命令可以在目录结构中搜索文件,并执行指定的操作。

    基本语法

    1 find 目录 [选项] 查询后的动作

    选项说明

     1 -amin 分钟数:查找指定分钟数以前被访问过的所有文件。
     2 -atime 天数:查找指定天数以前被访问过的所有文件。
     3 -cmin 分钟数:查找指定分钟数以前文件状态被修改过的所有文件。
     4 -ctime 天数:查找指定天数以前文件状态被修改过的所有文件。
     5 -mmin 分钟数:查找指定分钟数以前文件内容被修改过的所有文件。
     6 -mtime 天数:查找指定天数以前文件内容被修改过的所有文件。
     7 -newer 文件名:列出比指定文件还要新的文件。
     8 -uid 帐号ID:查找使用者是指定账号(即UID)的文件。
     9 -gid 群组ID:查找群组是指定账号的文件。
    10 -user 用户名:查找指定用户名的文件。
    11 -group 群组名:查找指定群组名的文件。
    12 -nouser:查找没有所有人的文件。
    13 -nogroup:查找没有所属组的文件。
    14 -maxdepth 深度:查找深度距离当前目录最多n个子目录深度 。
    15 -mindepth 深度:查找深度距离当前目录至少n个子目录深度。
    16 -name 文件名:查找指定文件名的文件,区分大小写。*表示通配任意个字符,?表示通配单个字符。
    17 -iname 文件名:查找指定文件名的文件,不区分大小写。*表示通配任意个字符,?表示通配单个字符。
    18 -type TYPE:查找文件的类型为TYPE的文件。类型主要有:一般文件(f),装置文件(b、c),目录(d),软链接(l),socket(s),及FIFO(p)等属性。
    19 -empty:查找路径下为空的文件或文件夹。
    20 -size [+-]SIZE:查找比SIZE还要大(+)或小(-)的文件。SIZE的规格有:k、M、G。
    21 -perm [-/]mode:查找文件权限为mode或大于mode(-)或包含任一mode(/)的文件,这个mode为类似chmod的属性值。
    22 -a:两个条件必须同时为真。
    23 -o:两个条件只要任意一个为真。
    24 -not:对条件进行取反。

    执行动作

    1 -exec 命令 {} ;:-exec后面可再接额外的命令来处理查询到的结果。
    2 -ok 命令 {} ;:-ok相对于-exec而言更安全一点,会让用户确定所要执行的操作。
    3 -print:将结果打印到屏幕上。

    使用举例

    1 [root@localhost ~]# find . -name test
    2 ./test
    3 [root@localhost ~]#

    locate命令

    locate命令用于查找符合条件的文档,该命令会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录,比find快很多。因为该命令是从数据库内查找,并不是在磁盘上直接查找。

    locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统会每天更新一次,也可以手工升级数据库。

    安装命令

    1 [root@localhost ~]# yum install -y mlocate

    更新命令

    1 [root@localhost ~]# updatedb

    基本语法

    1 locate [选项] 关键字

    选项说明

    1 -i:忽略大小写的差异。
    2 -c:不输出文件名,仅计算找到的文件数量。
    3 -l 行数:表示仅输出指定行数。
    4 -S:输出locate所使用的文件或目录的相关属性。
    5 -r:使用正则表达式进行搜索。

    使用举例

    1 [root@localhost ~]# locate hello.zip
    2 /home/hello.zip
    3 [root@localhost ~]#
  • 相关阅读:
    zabbix3.0配置服务器流量告警
    centos6.5环境Redis下载及编译安装
    tomcat报错catalina.sh: line 401: /usr/java/jdk1.7.52/bin/java: No such file or directory
    zabbix报警Too many processes on zabbix server
    tomcat报错:java.net.SocketException: Permission denied["http-nio-80"]
    tomcat启动报错:Injection of autowired dependencies failed
    java的split的坑,会忽略空值
    教训:任何的程序脚本,即便你认为再没有问题,也要测试一下再上线。
    如何修改HDFS的备份数
    sqoop遇到的问题
  • 原文地址:https://www.cnblogs.com/shamao/p/11176854.html
Copyright © 2011-2022 走看看