Linux下常用的find命令汇总

    xiaoxiao2021-03-25  21

    Linux下常用的find命令汇总

    Linux 下的find命令是很强大的查找命令,但花费的时间比较多。(因为find是直接在硬盘查找,如果你对硬盘比较老旧了,就得等很久了,而where is查找依赖于文件数据库搜索,优点是速度快,但是最大缺点是实时性慢)。它是将档案系统内符合 expression 的档案列出来。你可以指定档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。

    find命令的格式:

    find [-path……] -options [-print -exec -ok]

     path:要查找的目录路径

          ~表示$HOME目录

           . 表示当前目录(.可省略)

           / 表示根目录

    myfile目录下有10个文件:

    [wzb@www myfile]$ ls

    目录默认文件属性为775,此处dir和dir1修改为664

    drw-rw-r--. 2 wzb wzb 4096 Mar26 22:23 dir 

    drw-rw-r--. 2 wzb wzb 4096 Mar26 22:23 dir1

    -r-xr--r--. 1 wzb wzb    0 Mar 26 21:34 file1.doc   //此处文件权限已修改为544

    -r-xr--r--. 1 wzb wzb    0 Mar 26 21:35 file2.txt  //此处文件权限已修改为544

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:35 file3.xls  //文件默认权限为664

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:35 file4.ppt

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:36 file5.doc

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:34 file.doc

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:50 test.c

    -rw-rw-r--. 1 wzb wzb    0 Mar 26 21:51 world.exe

    1、按名字查找:

    find -name '*.txt'

    1)在当前目录下查找以.txt结尾的文件。

     [wzb@www myfile]$ find -name '*.txt'

    ./file2.txt

    (2)find-name 'file*'

    在当前目录下查找以file开头的文件。

    [wzb@www myfile]$ find -name'file*'

    ./file5.doc

    ./file4.ppt

    ./file3.xls

    ./file.doc

    ./file1.doc

    ./file2.txt

    [wzb@www myfile]$

    (3)find-name '[k-z]*'

    1)在当前目录下查找以字母kz之间的文件。

    [wzb@www myfile]$ find -name'[k-z]*'

    ./world.exe

    ./test.c

    (4) [ ]内也可以是数字,如find -name 'file[1-5]*'

    在当前目录下查找以file开头的前5的文件。

    [wzb@www myfile]$ find -name'file[1-5]*'

    ./file5.doc

    ./file4.ppt

    ./file3.xls

    ./file1.doc

    ./file2.txt

     

    2、按权限查找

    find –perm +文件属性(544

    在当前目录下查找属性为544的文件。

    (1)[wzb@www myfile]$find -perm 544

    ./file1.doc

    ./file2.txt

    (2)find -perm 664(注意:目录和文件都查找到并显示出来)

    ./dir1

    ./file5.doc

    ./file4.ppt

    ./file3.xls

    ./file.doc

    ./world.exe

    ./test.c

    ./dir

    (3)若只想查找属性为664的目录文件,该怎么查找呢?

    [wzb@www myfile]$ find -perm664 | find -type d

    ./dir1

    ./dir

    (4)若只想查找属性为664的普通文件,又该怎么查找呢?

    [wzb@www myfile]$ find -perm664 | find -type f

    ./file5.doc

    ./file4.ppt

    ./file3.xls

    ./file.doc

    ./file1.doc

    ./world.exe

    ./test.c

    ./file2.txt

     

    4、按属主及属组查找 

    (1)find  -user root

    在当前目录下查找属性为root的文件

    [wzb@www code]$ find -user root

    find: `./file33': Permission denied

    注意:file33是一个没有任何权限的文件

    (2) 查找属主是www的文件          $ find / -user www   (3)查找属主被删除的文件        $ find / -nouser   (4) 查找属组mysql的文件        $ find / -group file 

    (5)查找用户组被删掉的文件        $ find / -nogroup

    4、按时间查找:

    find /var –mtime  -1+1是查找1天以前被修改的文件)

    在var下找更改时间为1天以内的文件。

    -rw-rw-r--.1 wzb wzb    6 Mar 28 05:49 file1.ppt

    -r-xr--r--. 1 wzb wzb   0 Mar 26 21:35 file2.txt

    -rw-rw-r--. 1 wzb wzb   0 Mar 26 21:35 file3.xls

    -rw-rw-r--. 1 wzb wzb   0 Mar 26 21:35 file4.ppt

    -rw-rw-r--. 1 wzb wzb   0 Mar 26 21:36 file5.doc

    -rw-rw-r--. 1 wzb wzb   0 Mar 26 21:34 file.doc

    --w--w--w-. 1 wzb wzb   0 Mar 26 21:50 test.c

    -rw-rw-r--. 1 wzb wzb   0 Mar 26 21:51 world.exe

    [wzb@wwwmyfile]$ find -mtime -1

    .

    ./file1.ppt

     

    与之类似按时间查找还有: (1)查找一天内被访问的文件     $ find . -atime -1  

    (2)查找一天前被访问的文件     $ find . -atime +1    (3)查找一天内状态被改变的文件       $ find . -ctime -1   (4)查找一天前状态被改变的文件       $ find . -ctime +1  (5)查找10分钟以前状态被改变的文件      $ find . -cmin +10

    5、按类型查找   

     在当前目录及子目录下,查找目录文件   

     $ find . -type l –print

    [wzb@www myfile]$ find -type d

    .

    ./dir1

    ./dir

     

    6按文件新旧查找:       查找比"file5.doc"新的文件 

    [wzb@www myfile]$ find . -newer "file5.doc"

    .

    ./dir1

    ./file1.ppt

    ./world.exe

    ./test.c

    ./dir

    查找比"file5.doc"旧的文件  $ find . ! -newer " file5.doc " 查找比"file5.doc"新,"dir"旧的文件  $ find . -newer “file5.doc '”! -newer “dir”

     

    7、按文件大小查找:   查找超过1k的文件 

    [wzb@www myfile]$ find -size +1k

    .

    ./dir1

    ./dir 查找小于2k的文件  $ find . -size 2k

    [wzb@www myfile]$ find -size -2k

    ./file1.ppt

    ./file5.doc

    ./file4.ppt

    ./file3.xls

    ./file.doc

    ./file1.doc

    ./world.exe

    ./test.c

    ./file2.txt

     查找等于3字节的文件  $ find  -size  3c

    8、执行命令      查找del.txt并删除,删除前提示确认  $ find  -name ' file1.doc' -ok rm {} \;

    [wzb@www myfile]$ ls

    dir   file1.doc  file3.xls file5.doc  test.c

    dir1  file2.txt  file4.ppt file.doc   world.exe

    [wzb@www myfile]$ find -name "file1.doc" -ok rm {} \;

    < rm ... ./file1.doc > ? y

    [wzb@www myfile]$ ls

    dir   file2.txt  file4.ppt file.doc  world.exe

    dir1  file3.xls  file5.doc test.c

    查找test.c 并备份为hello.c 

     $ find  -name “test.c”-exec cp {} {}.bak \

    转载请注明原文地址: https://ju.6miu.com/read-200017.html

    最新回复(0)