2023年7月26日发(作者:)
find命令的prune⽤法总结最近因为服务器运维的需要在学习linux脚本编程,接触到find命令,看了⼀些课程和⽂章,但是总感觉还是没有讲明⽩prune。简单来说,prune的功能就是当遇到某个⽂件夹的时候,跳过这个⽂件夹,不进去继续查找。我们下⾯看例⼦说。➜ findExample tree ..├── folder1├── folder2│ ├── sub1│ │ └── file1│ └── sub2│ └── file2└── folder3 └── file35 directories, 3 files这是⽤来做说明的⽂件夹结构。如果我们想查找除了folder3这个⽂件夹之外的其他⽂件夹⾥的⽂件,可以⽤这样的命令实现:➜ findExample find . -path ./folder3 -prune -o -type f -print./folder2/sub1/file1./folder2/sub2/file2find后⾯的第⼀个英⽂点号.表⽰当前根路径,-path ./folder3表⽰匹配路径为./folder3的⽂件夹,-prune表⽰把前⾯命令所匹配到的路径排除,不再进⼊该路径下⾯继续查找,-o表⽰或,-type f表⽰查找⽂件,-print表⽰打印查找结果到命令⾏终端。有⼏个需要注意的点:-path后⾯需要跟绝对路径或者是相对路径,不能只有⽂件夹名称➜ findExample find . -path folder3 -prune -o -type f -print
./folder2/sub1/file1./folder2/sub2/file2./folder3/file3这样是错误的。把-path改成-name就对了。➜ findExample find . -name folder3 -prune -o -type f -print./folder2/sub1/file1./folder2/sub2/file2-o⼀开始让我感到很疑惑。它的意思是OR,那就是既匹配了前⾯的./folder3,⼜匹配了后⾯的-type f,可为什么打印出来的没有./folder3呢?原来是因为-print只对离⾃⼰最近的⼀个匹配条件起作⽤,在这个例⼦⾥也就是只打印-o后⾯的匹配条件所匹配的⽂件,对-o前⾯的-path
folder3 -prune所匹配的东西不起作⽤find命令是linux系统⾥很常⽤的⼀个命令,可以通过man find命令查看其他参数和⽤法。有疑问,可以⼀起探讨。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690360972a337772.html
评论列表(0条)