-
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