查看“Find”的源代码
←
Find
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
__TOC__ ==find 命令参数详解== '''1、name选项''' *想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用: :$find . -name "*.txt" -print *想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用: :$find . -name "[A-Z]*" -print *如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件: :$find . -name "[a-z][a-z][0--9][0--9].txt" -print '''2、perm选项''' *如在当前目录下查找文件权限位为755(八进制)的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用: :$ find . -perm 755 -print '''3、prune选项:忽略某个目录''' *如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用: :$find /apps -path "/apps/bin" -prune -o -print ::*在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。 *避开多个文件夹 :find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print ::*圆括号表示表达式的结合。\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。 *查找某一确定文件,-name等选项加在-o 之后 :$find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print;查找temp文件 '''4、user和nouser选项''' *按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用: :$ find ~ -user sam -print *为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。 :例如,希望在/home目录下查找所有的这类文件,可以用: :$ find /home -nouser -print '''5、group和nogroup选项''' *就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用: :$ find /apps -group gem -print *要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件 :$ find / -nogroup-print '''6、按照更改时间或访问时间等查找文件([[mtime,ctime,atime]])''' 如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。 *希望在系统根目录下查找更改时间在5日以内的文件,可以用: :$ find / -mtime -5 -print *为了在/var/adm目录下查找更改时间在3日以前的文件,可以用: :$ find /var/adm -mtime +3 -print '''7、newer选项: 查找比某个文件新或旧的文件''' *查找更改时间在比temp文件新的文件: :$ find . -newer temp -print *如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,它的一般形式为: newest_file_name ! oldest_file_name ::*其中,!是逻辑非符号。查找更改时间比文件sam新但比文件temp旧的文件: ::例:有两个文件 -rw-r--r-- 1 sam adm 0 10月 31 01:07 fiel -rw-rw-rw- 1 sam adm 34890 10月 31 00:57 httpd1.conf -rwxrwxr-x 2 sam adm 0 10月 31 01:01 httpd.conf drw-rw-rw- 2 gem group 4096 10月 26 19:48 sam -rw-rw-rw- 1 root root 2792 10月 31 20:19 temp ::$find -newer httpd1.conf ! -newer temp -ls 1077669 0 -rwxrwxr-x 2 sam adm 0 10月 31 01:01 ./httpd.conf 1077671 4 -rw-rw-rw- 1 root root 2792 10月 31 20:19 ./temp 1077673 0 -rw-r--r-- 1 sam adm 0 10月 31 01:07 ./fiel '''8、type选项''' *在/etc目录下查找所有的目录,可以用: :$ find /etc -type d -print ; 类型 directory *在当前目录下查找除目录以外的所有类型的文件,可以用: :$ find . ! -type d -print *在/etc目录下查找所有的符号链接文件,可以用 :$ find /etc -type l -print '''9、size选项''' 可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。 *在当前目录下查找文件长度大于1 M字节的文件: :$ find . -size +1000000c -print *在/home/apache目录下查找文件长度恰好为100字节的文件: :$ find /home/apache -size 100c -print *在当前目录下查找长度超过10块的文件(一块等于512字节): :$ find . -size +10 -print '''10、depth选项''' 在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。 *在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。它将首先匹配所有的文件然后再进入子目录中查找。 :$ find / -name "CON.FILE" -depth -print '''11、mount选项''' 在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。 *从当前目录开始查找位于本文件系统中文件名以XC结尾的文件: :$ find . -name "*.XC" -mount -print ==find 实例== 1、查找当前用户主目录下的所有文件: :$ find ~ -print 2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件; :$ find . -type f -perm 644 -exec ls -l { } \; 3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径; :$ find / -type f -size 0 -exec ls -l { } \; :$ find / -type f -size 0 -exec rm -i { } \; 删除它 4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们; :$ find /var/logs -type f -mtime +7 -ok rm { } \; 7日以内的文件 -mtime -7 5、查找系统中所有属于root组的文件; :$find . -group root -exec ls -l { } \; 6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。 :$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \; 7、为了查找当前文件系统中的所有目录并排序; :$ find . -type d | sort
返回至“
Find
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
社群首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息