Linux命令之乐--find

find是命令行工具箱中最棒的命令之一。

列出当前目录及其子目录中的文件和文件夹。

[root@LAMP WebRoot]# find . -print
.
./index.jsp
./upload.jsp
./listfile.jsp
./update.jsp
./WEB-INF
./WEB-INF/classes
./WEB-INF/classes/DownLoadServlet.class
./WEB-INF/classes/ListFileServlet.class
./WEB-INF/lib
./WEB-INF/lib/commons-fileupload-1.3.1.jar
./WEB-INF/lib/commons-io-2.4.jar
./WEB-INF/web.xml

-print,用 对文件名进行分隔,另外它也可以省略,因为它已经是默认的了,需要注意的是文件名中含有换行符时,应该使用-print0,它使用作为文件名间的分隔。

[root@LAMP WebRoot]# find . -print0
../index.jsp./upload.jsp./listfile.jsp./update.jsp./WEB-INF./WEB-INF/classes./WEB-INF/classes/DownLoadServlet.class./WEB-INF/classes/ListFileServlet.class./WEB-INF/lib./WEB-INF/lib/commons-fileupload-1.3.1.jar./WEB-INF/lib/commons-io-2.4.jar./WEB-INF/web.xml[root@LAMP WebRoot]# 

根据文件名或正则表达式进行搜索。

-name

[root@LAMP WebRoot]# find -name DownLoadServlet.class
./WEB-INF/classes/DownLoadServlet.class

-iname,忽略大小写

[root@LAMP WebRoot]# find -iname downLoadServlet.class
./WEB-INF/classes/DownLoadServlet.class

匹配多个条件中的一个

[root@LAMP WebRoot]# find . ( -name "*.class" -o -name "*.jar" )
./WEB-INF/classes/DownLoadServlet.class
./WEB-INF/classes/ListFileServlet.class
./WEB-INF/lib/commons-fileupload-1.3.1.jar
./WEB-INF/lib/commons-io-2.4.jar

     注意中()间的空格。

 找出当前目录下名为database的目录

[root@www src]# find . -type d -name database
./database

 find 和xargs的结合

  find找出的文件是以回车换行的,而xargs却是空白字符 (空格, TAB, 换行符) 来分割记录的,所以应该使用相同的分割符,这里都用null

find /wls/webapps -name ".svn" -print0|xargs -0 rm -rf
原文地址:https://www.cnblogs.com/zydev/p/5797814.html