find命令中选项-path和-prune的使用

在Windows中可以在某些路径中查找文件,也可以设定不在某些路径中查找文件,下面用Linux中的find的命令结合其-path -prune参数来看看在Linux中怎么实现此功能。
假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0、dir1和dir2 ...等目录及dir00、dir01...dir10、dir11...等子目录。

1. 在当前目录下查找所有txt后缀文件
    find ./ -name "*.txt"

2.在当前目录下的dir0目录及子目录下查找txt后缀文件
    find ./ -path "./dir0*" -name "*.txt"

3.在当前目录下的dir0目录下的子目录dir00及其子目录下查找txt后缀文件
    find ./ -path "*dir00*" -name "*.txt"

4.在除dir0及子目录以外的目录下查找txt后缀文件
    find ./ -path "./dir0*" -a -prune -o -name "*.txt" -print
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(&&); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path ‘./dir0*‘ -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。

5.在dir0、dir1及子目录下查找txt后缀文件

find ./ \( -path "./dir0*" -o -path "./dir1*" \)  -a -name "*.txt" -print

6.在除dir0、dir1及子目录以外的目录下查找txt后缀文件
    find ./ \( -path "./dir0*" -o -path "./dir1*" \) -a -prune -o -name "*.txt" -print
注意:圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。由于命令行不能直接使用圆括号,所以需要用反斜杠‘\‘进行转意(即‘\‘转意字符使命令行认识圆括号)。同时注意‘\(‘,‘\)‘两边都需空格。

+1. 在所有以名为dir_general的目录下查找txt后缀文件

find ./ -path "*/dir_general/*" -name "*.txt" -print

时间: 2024-10-11 17:18:46

find命令中选项-path和-prune的使用的相关文章

python中os.path.dirname(__file__) 命令行 参数没有绝对路径导致数据库找不到

(1).当"print os.path.dirname(__file__)"所在脚本是以完整路径被运行的, 那么将输出该脚本所在的完整路径,比如: python d:/pythonSrc/test/test.py 那么将输出 d:/pythonSrc/test (2).当"print os.path.dirname(__file__)"所在脚本是以相对路径被运行的, 那么将输出空目录,比如: python test.py 那么将输出空字符串 启动参数后来加上绝对路径

Linux将命令添加到PATH中

Linux将命令添加到PATH中博客分类:linuxLinuxApacheBash 简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令.有的话则执行,不存在则提示命令找不到.比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls命令根本不在这个两个目录下,当你输入ls命令时LINUX会去/bin,/usr/bin,/sbin等目录寻找该命令.而PATH就是定义/bin:/sbin:/usr/bin等这些路劲的变

[转]rsync命令中文文档

原文链接 rsync是一个快速.多功能的远程(和本地)文件拷贝工具. 摘要 Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [[email protected]]HOST:DEST Access via rsync daemon: P

【源】从零自学Hadoop(12):Hadoop命令中

阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 上一篇,我们对Hadoop命令进行了简略的列举,但是Hadoop命令特多,还有一部分没有列举完,官网基本都是英文的,所以只能拙略的翻译下,妄大家见谅. 下面,我们就开始对Hadoo

普通用户授权sudo、which搜索命令路径、$PATH路径、bash内置命令有哪些

在root模式对普通用户授权: [[email protected] ~]# visudo ==vi /etc/sudoers 在vi编辑模式,输入98gg,调到98行: ## Allow root to run any commands anywhere root    ALL=(ALL)       ALL 输入yy再输入p表示复制粘贴,并改为keke用户: ## Allow root to run any commands anywhere root    ALL=(ALL)      

Linux学习命令汇总八——文件查找命令find选项及使用技巧

本章Blog相关Linux知识点 find与grep的不同点: find为文件搜索命令--用来在指定目录下查找文件,而grep 为文本搜索命令--根据用户指定的文本模式对目标文件进行逐步搜索,显示能够被匹配的行 : find选项支持文件通配符,而grep选线支持正则表达式  : find查找为精确查找,精确匹配但搜索速度稍慢. grep命令选项及正则表达式类型,详细请参考前文"Linux学习命令汇总三--Linux用户组管理,文件权限管理,文本搜索命令grep及正则表达式"   bas

linux常用命令cd&ls&PATH

一.cd 命令cd--change directory即变换目录. cd 绝对路径或相对路径 cd ~用户 表示到这个用户的家目录,即/home/用户 cd ~表示回到自己的家目录,即/root这个目录 cd 表示回到自己的家目录 cd .. 表示回到上次目录 二.ls命令 ls--list即列出当前目录下的文件. ls -l表示列出文件的长数据串行,包含属性和权限等数据(常用) ls -a表示列出全部文件,连同隐藏(开头为.)一起列出 ls -A表示列出全部文件,连同隐藏,但不包括.和..这两

linux-man命令中的编号含义(包括系统调用和库函数讲解)

博文说明[前言]: 本文将通过个人口吻介绍linux的man命令中的编号含义(包括系统调用和库函数解释),在目前时间点[2017年6月13号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文参考文献引用链接: 1.http://www.cnblogs.com/chao1118/p/3715523.html2.http://blog.csdn.net/high_high/artic

ps命令常用选项参数详解

PS命令是什么 ps命令能够给出当前系统中进程的快照.它能捕获系统在某一时间的进程状态.如果想要不断更新查看这个状态,可以配合watch命令或使用top命令.ps命令支持三种使用的语法格式 UNIX 风格:选项可以组合在一起,并且选项前必须有"-"连字符. BSD 风格 :选项可以组合在一起,但是选项前不能有"-"连字符. GNU 风格 :长选项,选项前需要有两个"-"连字符. ps命令基本选项及参数释义 a:显示现行终端机下的所有程序,包括其他