Linux - Shell - find - 进阶: 范围
概述
- 继续昨天的 find
背景
- 还有一些 过滤条件
1. 约束: 目录层数
概述
- 约束目录的层级
选项
-maxdepth
- 作用
- 约束最大目录层级
- 相对路径
- 作用
-mindepth
- 作用
- 约束最小目录层级
- 相对路径
- 作用
其他
- 路径从 1 开始算
- 都是 正整数
命令
# 查找层数 [1, 1]
> find /etc -name 'passwd' -maxdepth 1
# 查找层数 [1, 正无穷]
> find /etc -name 'passwd' -mindepth 1
# 查找层数 [1, 2]
> find /etc -name 'passwd' -maxdepth 1 -mindepth 1
2. find: 逻辑运算
概述
- find 的一些约束条件, 也可以做逻辑运算
选项
-a
概述
- 与
形式
expr1 expr2
expr1 -a expr2
expr1 -and expr2
逻辑
- expr1 为 真, 则 expr2 继续执行
- expr1 为 假, 则 expr2 不再执行
- 有点像 java 的 && 有木有?
-o
概述
- 或
形式
expr1 -o expr2
expr1 -or expr2
逻辑
- expr1 为 真, 则 expr2 不再执行
- expr1 为 假, 则 expr2 继续执行
- 有点像 java 的 || 有木有?
! / -not
概述
- 非
形式
!expr
-not expr
逻辑
- expr 真值取反
- 最好用 '' 引起来
- 有点像 java 的 ! 有木有?
- expr 真值取反
3. 约束: 排除路径
概述
- 在范围内, 排除一个路径
-prune
概述
- 排除
机制
需要前面的 test
- 比如 name, path 之类的东西
如果前面的判定为 true, 则不会进入 目录 进行查找
不会像其他的 action, 和 -print 排斥
- -print 是默认的 action
命令
# 单独使用
# path 里是 通配符
# 结果只会显示 /etc/pam.d
> find /etc -path "*pam.d*" -prune # 排除
# 1. -o 后面必须要跟 action,
# 1. 单纯的 expr 会自带 -print
# 2. 按理说, 这里的 -prune 后面也有个 print, 但是我试了试, 发现 -o 连接多个 print, 最后只打印一次, 但是原因, 确实没找到
# 3. -prune 把 path 匹配的内容, 标记了 true, 所以 print 就不执行了, 没有标记 true 的, print 反而会执行... > find /etc -path "*pam.d*" -prune -o -print
4. 约束: 排除多个路径
概述
- 一次排除多个路径
命令
# 简单举个例子
# 还可以根据需要, 使用 -a, !
# 还可以把 path 换成 regex, name 等等 test
> find /etc \( -path "*pam.d*" -o -path "*ntp*" \) -prune -o - print
ps
ref
- Finding Files
- gnu 的官方文档
- 东西很全, 也很清楚
- gnu 的官方文档
- 每天一个linux命令(22):find 命令的参数详解
- Finding Files
其他
- find 这块, 终于结束了
- 如果真的再要加深, 估计得到 底层, 看 代码实现了
- 不过 gnu 的文档写的倒还听清楚
- 比 man 好不少
- find 这块, 终于结束了
以后
- 通配符抽空写一个吧, 反正也就那点东西
Linux - Shell - find - 进阶: 范围的更多相关文章
- linux shell编程进阶学习(转)
第一节:基础 ls -lh ——可以用户友好的方式看到文件大小 file 文件名 ——查看文件类型 stat 文件名 ——查看文件当前状态 man 命令/函数名 ——查看详细的帮助文档 man中看某 ...
- Linux - Shell - find - 进阶: 时间与大小
概述 继续 find 这次的内容, 参数稍微要 复杂那么一丢丢 背景 刚学会了 基础 的参数 现在来了解一些 时间 和 空间 的参数 一说到操控时间空间, 感觉立马起来了... 准备 OS cento ...
- Linux shell脚本进阶使用
shell的循环控制语句 - continue:提前结束某次循环,重新开始下一次 - break:提前结束某层循环 范例: #求100以内的奇数和 #!/bin/bash sum=0 for i in ...
- linux shell脚本之-变量极速入门与进阶(2)
1,$$:显示当前的进程id号 ghostwu@dev:~/linux/shell/how_to_use_var$ cat show_pid.sh #!/bin/bash echo $$ ghostw ...
- linux shell脚本之-变量极速入门与进阶(1)
1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...
- [拾 得] 一枚迷人的贝壳 SHELL / Linux | shell 脚本初步入门
坚持知识分享,该文章由Alopex编著, 转载请注明源地址: http://www.cnblogs.com/alopex/ 索引: 什么是shell shell的分类 shell脚本的执行方式 ...
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
随机推荐
- PTA L2-029 | 特立独行的幸福 (打表+递归)
题目描述 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 \(1\),就称该数为幸福数.\(1\) 是一个幸福数.此外,例如 \(19\) 经过一次迭代得到 ...
- javaScript中的异步编程模式
1.事件模型 let button = document.getElementById("my-btn"); button.onclick = function(event) { ...
- 3、const与constexpr
初遇到constexpr真的是有点懵比,看了很多博客也没看懂,不知道是我太笨,还是别人写的太深奥?总之经过一番折腾算是入门了.一下是我个人总结,有不对的地方望指出. 一.学习const与constex ...
- python3中的参数*args
python的传参是如何实现的 # 将未拆包的数据进行传参 def run(a,*args): #第一个参数传给了a print(a) # args是一个元组,里面是2和3两个参数 print(a ...
- tomcat-embeded-core源码编译
使用spring-boot创建web工程时,默认采用embeded tomcat作为容器,实际使用过程中,可能会需要对其中的某些功能做微调,而tomcat又没有给出预留配 ,这时就需要对tomcat- ...
- linux常见目录介绍
/bin:/usr/bin: 可执行二进制文件目录,如常用命令ls.cat /boot: 放置linux启动时用到的一些文件,建议分区的时候独立分区 /dev: 存在linux系统下的设备文件,访问该 ...
- MySQL安装版安装过程
步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 步骤7 步骤8 步骤9 步骤10 步骤11 步骤12
- Mariadb Galera Cluster 搭建集群
1.安装MariaDB 和Galera 见另外一篇博客 2.环境修改 2.1 防火墙和SELinux 这里不做说明,参照网上教程,和官方的配置 2.2. 创建用于节点同步的账号 [root@local ...
- crontab定时任务打包备份文件并删除过期文件
Crontab 示例,最后这里要写成shell脚本定时运行 30 17 * * * cp -rf /usr/local/tomcat9-jforum/tomcat/logs/catalina.out ...
- 安装多个jdk环境7、8、11等,并且切换默认使用版本
背景 在公司开发时,不同项目往往使用不同的jdk.目前使用最多的应该是JDK1.8,但是有些老项目使用1.7甚至1.6等 或者你想学习JDK最新版本,一些新特新如JDK11,现在最新都有JDK13 1 ...