find [path...] [expression]shell
path:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录express
expression:expression能够分为——“-options [-print -exec -ok ...]”apache
-options,指定find命令的经常使用选项,下节详细介绍安全
-print,find命令将匹配的文件输出到标准输出app
-exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格
find ./ -size 0 -exec rm {} \; 删除文件大小为零的文件 (还能够以这样作:rm -i `find ./ -size 0` 或 find ./ -size 0 | xargs rm -f &)
为了用ls -l命令列出所匹配到的文件,能够把ls -l命令放在find命令的-exec选项中:find . -type f -exec ls -l { } \;
在/logs目录中查找更改时间在5日之前的文件并删除它们:find /logs -type f -mtime +5 -exec rm { } \;ui
-ok,和-exec的做用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每个命令以前,都会给出提示,让用户来肯定是否执行。
find . -name "*.conf" -mtime +5 -ok rm { } \; 在当前目录中查找全部文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除以前先给出提示spa
-name
按照文件名查找文件。
find /dir -name filename 在/dir目录及其子目录下面查找名字为filename的文件
find . -name "*.c" 在当前目录及其子目录(用“.”表示)中查找任何扩展名为“c”的文件regexp
-perm
按照文件权限来查找文件。
find . -perm 755 –print 在当前目录下查找文件权限位为755的文件,即文件属主能够读、写、执行,其余用户能够读、执行的文件orm
-prune
使用这一选项可使find命令不在当前指定的目录中查找,若是同时使用-depth选项,那么-prune将被find命令忽略。
find /apps -path "/apps/bin" -prune -o –print 在/apps目录下查找文件,但不但愿在/apps/bin目录下查找
find /usr/sam -path "/usr/sam/dir1" -prune -o –print 在/usr/sam目录下查找不在dir1子目录以内的全部文件it
-user
按照文件属主来查找文件。
find ~ -user sam –print 在$HOME目录中查找文件属主为sam的文件
-group
按照文件所属的组来查找文件。
find /apps -group gem –print 在/apps目录下查找属于gem用户组的文件
-mtime -n +n
按照文件的更改时间来查找文件, - n表示文件更改时间距如今n天之内,+ n表示文件更改时间距如今n天之前。
find / -mtime -5 –print 在系统根目录下查找更改时间在5日之内的文件
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日之前的文件
-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
find / –nogroup -print
-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
find /home -nouser –print
-newer file1 ! file2
查找更改时间比文件file1新但比文件file2旧的文件。
-type
查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号连接文件。
f - 普通文件。
find /etc -type d –print 在/etc目录下查找全部的目录
find . ! -type d –print 在当前目录下查找除目录之外的全部类型的文件
find /etc -type l –print 在/etc目录下查找全部的符号连接文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
find . -size +1000000c –print 在当前目录下查找文件长度大于1 M字节的文件
find /home/apache -size 100c –print 在/home/apache目录下查找文件长度刚好为100字节的文件
find . -size +10 –print 在当前目录下查找长度超过10块的文件(一块等于512字节)
-depth:在查找文件时,首先查找当前目录中的文件,而后再在其子目录中查找。
find / -name "CON.FILE" -depth –print 它将首先匹配全部的文件而后再进入子目录中查找
-mount:在查找文件时不跨越文件系统mount点。
find . -name "*.XC" -mount –print 从当前目录开始查找位于本文件系统中文件名以XC结尾的文件(不进入其余文件系统)
-follow:若是find命令遇到符号连接文件,就跟踪至连接所指向的文件。
-?
同时显示匹配行上下的?行,如:grep -2 pattern filename同时显示匹配行的上下2行。
-b,--byte-offset
打印匹配行前面打印该行所在的块号码。
-c,--count
只打印匹配的行数,不显示匹配的内容。
-f File,--file=File
从文件中提取模板。空文件中包含0个模板,因此什么都不匹配。
-h,--no-filename
当搜索多个文件时,不显示匹配文件名前缀。
-i,--ignore-case
忽略大小写差异。
-q,--quiet
取消显示,只返回退出状态。0则表示找到了匹配的行。
-l,--files-with-matches
打印匹配模板的文件清单。
-L,--files-without-match
打印不匹配模板的文件清单。
-n,--line-number
在匹配的行前面打印行号。
-s,--silent
不显示关于不存在或者没法读取文件的错误信息。
-v,--revert-match
反检索,只显示不匹配的行。
-w,--word-regexp
若是被\<和\>引用,就把表达式作为一个单词搜索。
find . -name 'test.js' | grep -ani 'value1' 在当前目录下的test.js中寻找value1值得行,并显示行号。
ls -al | grep '^-' | wc -l 计算当前目录下的文件个数
ls -al | grep '^d' | wc -l 计算当前目录下的子目录个数
ls -lR | grep '^-' | wc -l 计算当前目录下以及全部子目录下全部文件个数