Shell编程中常用的工具

一、文件查找之find命令

1、语法格式

2、选项参数对照表

表格一
表格二

3、示例实操

  • 查找 /etc目录下以conf结尾的文件

    1
    find /etc -name '*.conf'
  • 查找/etc目录下大于1M的文件

    1
    find /etc -size +
  • 从二级子目录开始查找文件(f)/目录(d)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
      find . -mindepth 2 -type f

    #### 4、操作

    #### (1)-print

    打印输出,默认选项

    #### (2)-exec

    对搜索到的文件执行特定的操作,格式为` -exec 'command {} \;'`

    - 搜索`/etc`下的文件(非目录),文件以conf结尾,且大于10k,然后将其删除

    ```shell
    find ./etc/ -type f -name '*.conf' -size +10k -exec rm -f {} \;
  • 搜索条件和例一一样,将其复制到/root/conf目录下

    1
    find ./etc/ -size +10k -type f name '*.conf' -exec cp {} /root/conf/ \;
  • /var/log目录下以’*.log’结尾的文件且更改时间在七天以上的删除

    1
    find /var/log/ -name '*.log' -mtime +7 -exec rn -rf {} \;
(3)-ok

和exec功能一样,但是每次操作都会给用户提示

5、逻辑运算符

  • -a

  • -o

  • -not / !

示例:查找当前目录下,属主不是hdfs的所有文件

1
find . -not -user hdfs | find . ! -user hdfs

6、find、locate、whereis和which总结及适用场景分析

(1)locate
  • 文件查找命令,所属软件包是mlocate
  • 不同于find命令是在整块磁盘中搜索,locate命令是在数据库文件中查找
  • find默认是全部匹配,locate是默认匹配部分

通过updatedb命令更新数据库

(2)whereis
(3)which
作用:只返回二进制文件
(4)比较分析
命令 场景 分析
find 查找某一类文件,比如文件名部分一致 功能强大,速度慢
locate 只查找单个文件 功能强大,速度快
whereis 查找程序的可执行文件、帮助文档等 不常用
which 只查找程序的可执行文件 常用于查找程序的绝对路径