Linux find命令使用方法
Linux中find命令用来在指定目录下查找文件。通过组合不同参数可以在linux系统中快速查找需要的文件或目录。
find命令语法
格式:find pathname -options [ -print | -exec | -ok | -print0 ]
pathname: 查找路径设置
options: 选项。每一个选项前面都会带一个横杠-,常用选项如下:
-name:按照文件名来查找文件(大小写匹配敏感),后面跟完整文件名或者文件模式,用双引号包含。
-iname:按照文件名来查找文件(忽略大小写),后面跟文件名或者文件模式,用双引号包含。
-mtime [ n| -n| +n ]:按照文件的更改时间来查找文件,n表示天数。分别表示第n天、n天以内及n天以前。
-type [ f| d| b| c| p| l ]:查找某一类型的文件。比如f-文件,d-目录(常用),b-设备文件,c-字符设备文件,p-管道文件,l-符号链接文件。
-size n[B|KB|M] :查找大小为n的文件,n表示文件大小,可以带单位。比如+100M表示查找大于100M文件,-100M表示查找小于100M文件,100M表示查找等于100M文件
-depth:查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-maxdepth:控制查找目录层级数。如果使用,该参数通常放在第一个。比如在当前目录查找-maxdepth 。
-prune: 不在当前指定的目录中查找,如果同时使用了-depth选项,那么-prune选项会被忽略
-print: find命令将匹配的文件输出到标准输出。
-print0: 可以处理文件名包含空格情况,建议find与xargs结合时使用。
-exec: 对匹配的文件执行该参数所给出的shell命令。相应的目录形式为'command' {} \;,注意{}和\;之间的空格
-ok: 有提示,很少用。
find查找实例
(1)按文件名查找
find /etc -name "*.txt" #在/etc目录下以.txt后缀的文件
find /etc -name "[A-Z]*" #在/etc目录下查找以大写开头的文件
find /etc -name "host*" #在/etc目录下查找以host开头的文件
find . -maxdepth -type f -name "*.txt" -o -name "*.unl" #查找当前目录下txt和unl后缀的文件
find . -maxdepth -type f \( -name "*.txt" -o -name "*.unl" \) #同上
(2)按时间范围查找
find /home -type f -mtime #查找/home目录下第5天修改的文件
find /home -type f -mtime - #查找/home目录下5天内修改的文件
find /home -type f -mtime + #查找/home目录下5天前修改的文件
find /home -type f -cmin + #查找/home目录下5分钟前修改的文件
(3)按文件类型查找
find /etc -type f #查找/etc目录下所有的普通文件
find /etc -type d #查找/etc目录下所有的目录
find /etc ! -type d #查找/etc目录下所有非目录类型文件
find /etc -type l #查找/etc目录下所有的符号链接
(4)按文件大小查找
find /home -type f -size 100M #查找/home目录下等于100M的文件
find /home -type f -size +100M #查找/home目录下大于100M的文件
find /home -type f -size -100M #查找/home目录下小于100M的文件
(5)按文件属主、属组查找
find /tmp -user oracle #在/tmp目录下查找属主为oracle的文件
find /etc -group dba #在/etc目录下查找属组为dba的文件
(6)忽略指定目录查找
find -path /opt/bin -prune -o -type f "*.tar.gz" -print #忽略单个目录
find / -maxdepth \( -path /opt -o -path /var \) -prune -o -type f "*.tar.gz" -print #忽略多个目录
find组合命令实例(xargs&exec)
(1)查找并删除
find . -type f -name "*.aud" -print0 | xargs - -n rm #查找当前目录下所有的.aud文件并删除
find . -type f -name "*.aud" -exec rm -f {} \; #同上
find . -maxdepth -name "*.tar.gz" -exec rm -rf {} \; #查找当前目录下大于100M的.tar.gz文件包并删除
find /home -type f -mtime + -exec rm {} \; #查找/home目录中更改时间在7日以前的普通文件并删除
(2)查找包含指定内容的文件
find / -type f -print | xargs grep "device" #查找包含device单词的文件
find / -type f -name "*.cfg" -print | xargs grep -l "127.0.0.1" #查找包含127.0.0.1的.cfg后缀的配置文件
(3)查找并替换文件内容
find / -type f -name "*.cfg" -print | xargs sed -i 's/127.0.0.1/192.168.0.1/g' #查找包含127.0.0.1的.cfg后缀的配置文件并将127.0.0.1替换为192.168.0.
(4)查找及其他相关操作
find / -type f -size -exec ls -l {} \; #查找大小为0的文件,并列出完整路径
find . -type f -name "*.txt" -exec mv {} /tmp \; #将查找到的.txt文件移动到/tmp目录
find /etc -perm - -print | xargs chmod o-w #在/etc目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限
find . -type f -name ".txt" -exec cp {} -C {}.bak \; #备份所有.txt文件。这是使用两个{}的方式
Linux find命令使用方法的更多相关文章
- Linux 常用命令使用方法大搜刮
Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入 ...
- 【转】linux tail命令使用方法详解
原文网址:http://www.111cn.net/sys/linux/46902.htm linux tail命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个 ...
- Linux 常用命令使用方法大搜刮(转)
1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境. 退出当前shel ...
- Linux核心命令使用方法
一.Linux命令行常用快捷键 ctrl + c cancel 取消当前的操作 ctrl + l (小写字母L) clear(命令)清空当前屏幕 ctrl + d 退出当前用户 ctrl + r 查找 ...
- linux常用命令使用方法
一.常用的分析服务器日志命令 1.查看有多少个IP访问: awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数: grep "/ ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- Linux sed命令使用方法
sed(Stream Editor)是Linux中文本处理使用非常广泛的工具,可以对文件内容进行替换.删除.新增.选取特定行等功能.下面通过sed常用实例介绍sed命令的使用方法. sed基本语法 s ...
- Linux tcpdump命令使用方法
tcpdump是Linux上常用的抓包命令,用于截取网络分组并输出分组内容,常用于网络问题分析和排查. tcpdump语法 tcpdump [-i 接口] [-nn] [-w 文件名] [-c 次数] ...
- Linux grep命令使用方法
Linux系统中grep命令可以根据指定的字符串或者正则表达式对文件内容进行匹配查找.在Linux文件处理和SHELL编程中使用广泛. grep基本语法 用法: grep [选项] "字符串 ...
- java面试Linux常用命令使用方法大全
1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境. 退出当前s ...
随机推荐
- CentOS 关闭图形用户界面
1 centos 7以下版本 vim /etc/inittab :initdefault: #改为 :initdefault: 2. centos 7.x版本 rm -f /etc/systemd/s ...
- windows服务没有及时响应启动或控制请求
单击开始,单击运行,键入regedit,然后单击“确定”. 找到并单击以下注册表子项:HKEY_LOCAL_MACHINE——SYSTEM——CurrentControlSet——Control 在右 ...
- Redis 简介(官方翻译)
Redis是一个开源(基于BSD开源协议).内存型结构数据存储,可当做数据库.缓存.消息代理.它支持的数据结构有字符串.哈希表.列表.集合.可随机查询的有序集合.位图.基数统计.用于半径查询的地理位置 ...
- mysql外键的三种关系
因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 一对多或多对一 create table press( id int primary key auto_inc ...
- IntelliJ Idea设置Could not autowire. No beans of 'xxx' type found
1.问题描述 在Idea的spring工程里,经常会遇到Could not autowire. No beans of ‘xxxx’ type found的错误提示.但程序的编译和运行都是没有问题的, ...
- 使用spacedesk实现两台笔记本的双屏显示
转自:https://blog.csdn.net/qq_28106269/article/details/79297132 共屏软件:https://spacedesk.net/
- 数据持久化—真机上的Plist写入
其实写入不到真机里面主要是你写入时,当前那文件夹里你要写入的plist根本不存在 所以你怎么写都写不进去,所以你必须先创建你要写入的plist; 你用这样初始化程序就能自己创建: NSMutableA ...
- c++ maps使用
#include <iostream> #include <stdio.h> #include <memory.h> #include <queue> ...
- javafx链接实现
方式一: Desktop.getDesktop().browse(new URI(manualUrl)); 在linux环境bug 方式二: 转载自:https://stackoverflow.com ...
- 【转】AD常用端口
通常在域环境中我们有部分设备在DMZ区时,就需要知道AD的相关端口.在此提供给各位: 用户登录与验证身份时会用到的连接端口用户登录时会用到以下的服务,因此如果用户的计算机与域控制器之间被防火墙隔开,就 ...