Linux下find命令小结

发布时间:2019-12-14编辑:脚本学堂
本文介绍了linux下find命令用法的一些学习总结,有关find命令用法的细节与注意事项,Linux下find命令小结,需要的朋友参考下。

如果你了解linux系统在半年以下,我想你肯定用到过find命令,它的强大你一定有所感受到了。
相比windows窗口式的文件查找与搜索,find命令对于初学者来说,最难的就是各种参数与选项了,不过真正掌握了之后,你会感叹find命令的强大。

今天对linux命令中强大的文件与目录查找命令find命令在使用过程中的一些技巧与注意事项,做下总结,感兴趣的朋友参考下。(www.jb200.com

例1:
比如要找某个目录下的所有的*.file文件,但是想跳过其中的test1子目录,test2子目录,test3......
 

& sudo find . ( -path "./test1" -o -path "./test2" -o path "./test3" ....... -o path "./testX ") -prune
-o -type f -name "*.file" -print

首先,sudo 跳过。然后,find 跳过。

再然后, 一个"." 这东西可以省略,表示当前目录

接着,“(” 这个和后面的“)”是成对出现的,这里的"()"表示这对圆括号里面的东西shell不解释,交给find命令解释。恩,字面上就是这么说的,具体的,我也不知道,尤其是什么叫作“shell不解释,交给find解释”,不管他,照着写就行了。
注意,“(”和“)”前后都要有空格,不然出错,不可以这样“(-path” ,一定要有空格。

接着-path "路径"
这里每一个-path对应一个你想忽略的子目录 ,还有,-path后面要有空格,不能紧跟目录。(更多linux命令,请关注:linux命令大全
单引号,双引号无所谓,一个是强quote,一个是弱quote,区别肯定是有的,不过到现在还没搞明白。

每一个 -path "路径" 后跟一个 -o 表示-or 一串路径中间 用这个 -o连接

然后是-prune选项,意思是“砍掉”

接着又一个 -o 待会儿解释

后面的就比较普通了 选择文件类型 以"*.file"为文件名 注意,这里的双引号可以省略(唉,别管这个双引号了,老晕在这儿)

关键是-o
其实 还省略了一堆 -a "-and"

意思是:
如果
 

. ( -path "./test1" -o -path "./test2" -o path "./test3" ....... -o path "./testX ") 成立
则执行 prune
否则 执行
-type f -name "*.file" -print

其中
 

. ( -path "./test1" -o -path "./test2" -o path "./test3" ....... -o path "./testX ")


表示,当前目录 下 满足./test1 或者./test2 或者..... 的目录 -知道为什么是-o了吧

注意"./test"中的"./"不能省,一定要指明。

非要解释的话
可以这样想,虽然有些牵强
find 后先是跟一堆目录,然后就是动作,比如-prune 就是砍掉,-print 就是打印到控制台
-o表示 选择 可以理解成if else 语句。 不加-o 就是-a 表示并且,也就是一起执行
if (一堆目录)
动作 1 ...
else
动作2...