find 查找文件、文件夹

  • find 命令是用于搜索对应路径下方具体文件名的一种命令行,使用通配符 * 可以进行模糊匹配搜索。

    格式:find 路径 -name 文件名

    省略路径的情况下则搜索当前目录下方所有文件

    root@localhost ~]# find -name baddb.tar.gz
    ./baddb.tar.gz
    root@localhost ~]#
    (在当前目录下搜索名叫baddb.tar.gz的文件)

    也可以使用通配符 * ,使用通配符,且以*作为关键字开头时,注意要用单引号,若不使用单引号,除非目录下仅有一个匹配文件,否则返回错误提示 find: paths must precede expression
    Usage: find [-H] [-L] [-P] [path…] [expression]
    如以下案例是搜索当前目录下所有.zip格式的压缩包文件

    root@localhost ~]# find -name '*.zip'
    ./file1.zip
    ./123.zip
    ./WeCenter_2-5-14.zip
    ./Discuz_X3.1_SC_UTF8.zip
    以下这是一个错误示范,(由于当前目录下有多个.txt 文件,在不使用单引号的情况下,会报错。若仅有一个匹配文件,则显示该文件信息)
    root@localhost ~]# find -name *.txt
    find: paths must precede expression
    Usage: find [-H] [-L] [-P] [path...] [expression]
    root@localhost ~]#

    也可以直接加入路径对目标目录进行搜索

    root@localhost ~]# find /home/wwwroot -name '*.html'
    /home/wwwroot/default/index.html
    /home/wwwroot/baddb.com/lib/exe/index.html
    /home/wwwroot/baddb.com/lib/images/index.html
    /home/wwwroot/baddb.com/lib/plugins/index.html
    /home/wwwroot/baddb.com/lib/index.html
    /home/wwwroot/baddb.com/lib/scripts/index.html
    /home/wwwroot/baddb.com/lib/styles/index.html

    知识点提醒:当通配符 * 作为文件名的开头时,需要用单引号。

    批量删除大小为0kb的文件

    find . -name "*" -type f -size 0c | xargs -n 1 rm -f

    找出所有空文件夹

    find -type d -empty

    扩展知识

    附送一条命令:有时我们可能有多个站点,我们需要对所有站点下方的某一层目录(比如网站根目录)搜索某个文件名的文件,例如下例为搜索/home/wwwroot/下的所有文件夹根目录下,是否有叫index.php的文件,若有则打印结果。

    find /home/wwwroot/*/* ! -name "." -type d -prune -o -type f -name "index.php" -print
点赞

发表评论