zoukankan      html  css  js  c++  java
  • linux

     1、find简介

     Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

     语法:

      find path -option [ -print ] [ -exec -ok command ] {} ;

    参数说明 :

    find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

    expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

    -amin n : 在过去 n 分钟内被读取过

    -atime n : 在过去n天内被读取过的文件

    -cmin n : 在过去 n 分钟内被修改过

    -ctime n : 在过去n天内被修改过的文件

    -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

    -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

    -type c : 文件类型是 c 的文件。

      d: 目录

      f: 一般文件

    你可以使用 ( ) 将运算式分隔,并使用下列运算。

    exp1 -and exp2

    ! expr

    -not expr

    exp1 -or exp2

    exp1, exp2

     2、find使用案例
    (1)将当前目录及其子目录下所有目录或文件都列出来
        find .
    (2)将当前目录及其子目录下所有后缀名是 txt 的文件列出来
        find . -name "*.txt"
    (3)将当前目录及其子目录下一般文件都列出来
        find . -type f
    (4)将目前目录及其子目录下所有最近 20 天内更新过的文件列出
        find . -ctime -20
    (5)查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
        find /var/log -type f -mtime +7 -ok rm {} ;
    (6)查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
        find . -type f -perm 644 -exec ls -l {} ;
    (7)为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
        find / -type f  -size 0 -exec ls -l {} ;
     3、whereis命令

     Linux whereis命令用于查找文件。

     该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

     该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

    (1)输入命令
        whereis bash
    (2)显示结果
        bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz 
    (3)注意
        以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。
     4、which
    (1)查看指令"bash"的绝对路径
        which bash
     5、grep在文件中查找
    -A<显示行数>: 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    -b: 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    -B<显示行数>: 除了显示符合样式的那一行之外,并显示该行之前的内容。
    -c: 计算符合样式的列数。
    -C<显示行数>: 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    -h: 在显示符合样式的那一行之前,不标示该行所属的文件名称。
    -H: 在显示符合样式的那一行之前,表示该行所属的文件名称。
    -i: 忽略字符大小写的差别。
    -l: 列出文件内容符合指定的样式的文件名称。
    -L: 列出文件内容不符合指定的样式的文件名称。
    -n: 在显示符合样式的那一行之前,标示出该行的列数编号。
    -r: 此参数的效果和指定"-d recurse"参数相同。递归查询
    -v: 显示不包含匹配文本的所有行。
    -w: 只显示全字符合的列。
    -x --line-regexp : 只显示全列符合的列。
    -y: 此参数的效果和指定"-i"参数相同。
    (1)在文件中查找字符串(不区分大小写)
        grep -i  "1qaz" hr.txt
    (2)出成功匹配的行,以及该行之后的三行
        grep -A 3 -i "2wsx" hr.txt
    (3)在一个文件夹中递归查询包含指定字符串的文件
        grep -r "q" *
    (4)以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为
        grep -r update /etc/acpi
    (5)反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为
        grep -v test *test*
  • 相关阅读:
    左偏树
    论在Windows下远程连接Ubuntu
    ZOJ 3711 Give Me Your Hand
    SGU 495. Kids and Prizes
    POJ 2151 Check the difficulty of problems
    CodeForces 148D. Bag of mice
    HDU 3631 Shortest Path
    HDU 1869 六度分离
    HDU 2544 最短路
    HDU 3584 Cube
  • 原文地址:https://www.cnblogs.com/gygtech/p/14829523.html
Copyright © 2011-2022 走看看