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