shell编程:find命令
写在前面
在linux的日常管理中,find的使用频率很高,熟练掌握对提高工作效率很有帮助。
find的语法比较简单,常用参数的就那么几个,比如-name、-type、-ctime等。初学的同学直接看第二部分的例子,如需进一步了解参数说明,可以参考find的帮助文档。
find语法如下:
find(选项)(参数)
常用例子
根据文件名查找
列出当前目录以及子目录下的所有文件
find .
找到当前目录下名字为11.png的文件
find . -name "11.png"
找到当前目录下所有的jpg文件
find . -name "*.jpg"
找到当前目录下的jpg文件和png文件
find . -name "*.jpg" -o -name "*.png"
找出当前目录下不是以png结尾的文件
find . ! -name "*.png"
根据正则表达式查找
备注:正则表示式比原先想的要复杂,支持好几种类型。可以参考这里
找到当前目录下,文件名都是数字的png文件。
find . -regex "\./*[0-9]+\.png"
根据路径查找
找出当前目录下,路径中包含wysiwyg的文件/路径。
find . -path "*wysiwyg*"
根据文件类型查找
通过-type进行文件类型的过滤。
- f 普通文件
- l 符号连接
- d 目录
- c 字符设备
- b 块设备
- s 套接字
- p Fifo
举例,查找当前目录下,路径中包含wysiwyg的文件
find . -type f -path "*wysiwyg*"
限制搜索深度
找出当前目录下所有的png,不包括子目录。
find . -maxdepth 1 -name "*.png"
相对应的,也是mindepth选项。
find . -mindepth 2 -maxdepth 2 -name "*.png"
根据文件大小
通过-size来过滤文件尺寸。支持的文件大小单元如下
- b —— 块(512字节)
- c —— 字节
- w —— 字(2字节)
- k —— 千字节
- M —— 兆字节
- G —— 吉字节
举例来说,找出当前目录下文件大小超过100M的文件
find . -type f -size +100M
根据访问/修改/变化时间
支持下面的时间类型。
- 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
- 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
- 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
举例,找出1天内被修改过的文件
find . -type f -mtime -1
找出最近1周内被访问过的文件
find . -type f -atime -7
将日志目录里超过一个礼拜的日志文件,移动到/tmp/old_logs里。
find . -type f -mtime +7 -name "*.log" -exec mv {} /tmp/old_logs \;
注意:{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
另外,\;用来表示命令结束,如果没有加,则会有如下提示
find: -exec: no terminating ";" or "+"
根据权限
通过-perm来实现。举例,找出当前目录下权限为777的文件
find . -type f -perm 777
找出当前目录下权限不是644的php文件
find . -type f -name "*.php" ! -perm 644
根据文件拥有者
找出文件拥有者为root的文件
find . -type f -user root
找出文件所在群组为root的文件
find . -type f -group root
找到文件后执行命令
通过-ok、和-exec来实现。区别在于,-ok在执行命令前,会进行二次确认,-exec不会。
看下实际例子。删除当前目录下所有的js文件。用-ok的效果如下,删除前有二次确认
➜ find find . -type f -name "*.js" -ok rm {} \;
"rm ./1.js"?
试下-exec。直接就删除了
find . -type f -name "*.js" -exec rm {} \;
找出空文件
例子如下
touch {1..9}.txt
echo "hello" > 1.txt
find . -empty
原文地址:https://www.cnblogs.com/chyingp/p/linux-command-find.html
shell编程:find命令的更多相关文章
- Linux从入门到进阶全集——【第十四集:Shell编程-export命令】
参考: https://www.cnblogs.com/guojun-junguo/p/9855356.html 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量 ...
- Linux Shell编程 test命令
概述 test 命令是Shell 脚本中用来进行条件判断的. test命令示例 按照文件类型进行判断 测试选项 作 用 -b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c ...
- Linux Shell编程 awk命令
概述 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入(stdin).一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是l ...
- shell编程-test命令(七)
test命令常用作检查某些条件是否成立. 数值测试 -eq:检测两个数是否相等,相等返回true -ne:检测两个数是否相等,不相等返回true -gt:检测左边的数是否大于右边,是则返回true - ...
- Linux Shell编程 sed命令
概述 sed 是一种几乎可以应用在所有 UNIX 平台(包括 Linux)上的轻量级流编辑器,体积小.所以,它可以对从如管道这样的标准输入中接收的数据进行编辑. sed 主要是用来将数据进行选取.替换 ...
- Shell编程——test命令
1.整数 如果表达式为真返回值为0,如果表达式为假,返回值为1.test命令可以对整数.字符串.以及文件进行判断. -it:小于 -le:小于或等于 -gt:大于 -ge:大于或等于 -eq:等于 - ...
- Shell编程——多命令顺序执行、管道、grep命令
1.多命令执行符: (1)命令1:命令2 多个命令顺序执行,没有逻辑联系,即使命令1出错,命令2依旧执行. (2)命令1&&命令2:只有命令1正确执行,命令2才能正确执行:命令1 ...
- shell编程常用命令
Linux中常用的命令 #nl filename 使用nl命令打印文件内容并显示行号 #sed '/nw/,$d' filename 使用sed命令删除匹配nw至最后一行的内容 ...
- shell编程:命令替换的运用
命令替换,有两种方式 方式一:`command` 方式二:$(command) user.sh 查找系统中所有的用户,并且输出 #!/bin/bash nginx=`netstat -tnlp | | ...
- 末学者笔记--shell编程上 1 玄
Shell 编程 [内容简列]: 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令 5.1 grep 5.2 cut 5.3 s ...
随机推荐
- java 重新学习 (七)
一.mysql的InnoDB通过建立行级索确保事务完整性.,并以Oracle风格的共享锁来处理select语句.系统默认存储为InnoDB. 二. -- mysql 创建表 CREATE TABLE ...
- 基于vue2.0打造移动商城页面实践 vue实现商城购物车功能 基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
基于vue2.0打造移动商城页面实践 地址:https://www.jianshu.com/p/2129bc4d40e9 vue实现商城购物车功能 地址:http://www.jb51.net/art ...
- TP框架实现文件的下载(主要解决文件存在中文文件名的问题)
namespace Home\Controller; use Think\Controller; use Org\Net\Http; class IndexController extends Con ...
- 【转】modulenotfounderror: no module named 'matplotlib._path'问题的解决
今天在装matplotlib包的时候遇到这样的问题,在网上找了很长时间没有类似很好的解决方法,最后自己 研究找到了解决的方法. 之前在pycharm里面已经装了matplotlib包,之后觉着下载包挺 ...
- 封装一个Js 对象 生成Json
<script src="~/Content/Scripts/jquery-1.11.3.min.js"></script> <script> ...
- ORM:Chloe
ORM的一种:Chloe注意实体类模板特色:多表连接 利用chloe实现对各表的增删查改的管理,判断现有物料是否能够支持生产规模. 一开始报错: IQuery<ProductionPlans&g ...
- ftp搭建记录
1.安装vsftpd的rpm包 rpm -ivh vsftpd-2.0.5-16.el5_4.1.i386.rpm 使用YUM命令安装 yum install vsftpd -y. 2.ftp命令 s ...
- Jmeter接口压力测试(先登录再测接口)
Jmeter测试接口(包括登陆操作) 1. 创建HTTP Request先登录 参考: http://blog.csdn.net/ab_2016/article/details/782496 ...
- 三、SpringBoot项目探究
1.pom文件 父项目 <parent> <groupId>org.springframework.boot</groupId> <artifactId> ...
- java 数组的定义
package java03; /* 数组的初始化:就是创建一个数组,并向其中古语一些默认的值 两种常见的初始化方式: 1.动态初始化(指定长度) 2.静态初始化(指定内容) 动态初始化数组格式: 数 ...
