Linux下关于find命令的总结

Q1:为什么要学会使用find?

每个操作系统都由无数的文件组成,Linux更是如此。Linux下,有一个统一的思想:一切皆文件。在windows我们可以通过文件查找功能实现对文件的查找,通过后缀的不同来确定同名文件中,我们最终要找的文件是哪个。而Linux下我们就不能通过图形化界面的文件查找功能得到我们想要的,需要借助find指令,并且Linux下的文件是没有后缀的,所以一个同名的文件可以通过其文件属性的不同区分,也有可能一个同名文件在不同的目录下。所以当我们需要对特定文件进行修改或者维护时,我们就需要借助搜寻指令去找到这个文件。

Q2:Linux下是不是只有一种查找指令?

当然不是。

linux下的查找指令有,whereis,which,locate和find,那么来看看他们的区别。

which:寻找当前PATH下的需要寻找的指令路径

-a :将所有由 PATH 目录中可以找到的指令均列出,而不止第一个被找到的

指令名称

whereis:寻找特定文件(速度快,利用数据库搜寻)

-b :查找特定二进制文件

-m:找说明文件在manual路径下的文件

-s:只找source来源文件

-u:查找不含以上三种的文件

locate:寻找文件(利用数据库),有可能一个文件刚刚建立,无法找到;或者已经被删除的文件依然被找到了,都跟数据库的更新有关。

#locate

-i        //查找文件的时候不区分大小写 比如:locate  –i   passwd

-n       //只显示查找结果的前N行     比如:locate  -n  5   passwd

find:功能强大,在目录下搜索文件,并可以执行指定操作,提供了相当多的查找条件(搜寻硬盘)

Q3:find指令用法总结

find  [指定查找目录]  [查找规则]  [查找完后执行的action]

【查找规则】:

(1)根据文件名查找

-name:根据文件名查找

-iname:根据文件名查找(不区分大小写)

(* :通配任意字符; ?:通配任意单个字符;  []:通配方括号中的任意一个字符)

(2)根据文件所属用户和组群查找

-user :根据文件所属用户查找

-group:根据文件所属组群查找

(3)根据文件的uid和gid来查找

(GID为GroupId,即组ID,用来标识用户组的唯一标识符)

(UID为UserId,即用户ID,用来标识每个用户的唯一标示符)

-uid:根据文件所属用户id查找

-gid:根据文件所属组群id查找

(4)-a  (and)   -o (or)     -not (!)来查找

-a:连接两个不同的条件,条件一成立“且”条件二成立,的文件查找

-o:连接两个不同的条件,条件一成立“或”条件二成立,的文件查找

-not:对条件取反进行查找

(5)根据时间戳的相关属性查找

-atime:最近读取时间(天)

-ctime:最近状态更改时间(天)

-mtme:  最近内容更改时间(天)

-amin:    最近读取时间(分钟)

-cmin:    最近状态更改时间(分钟)

#find  /tmp  –atime  +5           //表示查找在五天内没有访问过的文件

#find  /tmp  -atime  -5            //表示查找在五天内访问过的文件

(6)根据文件类型查找

-type

f     // 普通文件

d     //目录文件

l     //链接文件

b     //块设备文件

c     //字符设备文件

p     //管道文件

s     //socket文件

(7)根据文件大小查找

-size

#find  /tmp  -size   2M           //查找在/tmp 目录下等于2M的文件

#find  /tmp  -size  +2M           //查找在/tmp 目录下大于2M的文件

#find  /tmp  -size  -2M           //查找在/tmp 目录下小于2M的文件

(8)根据文件权限查找文件

-perm

#find  /tmp  -perm  755

//查找在/tmp目录下权限是755的文件

#find  /tmp  -perm  +222

//表示只要有一类用户(属主,属组,其他)的匹配写权限就行

#find  /tmp  -perm  -222

//表示必须所有类别用户都满足有写权限

(9)-nouser  and  -nogroup

#find  /  -nogroup –a –nouser

//在整个系统中查找既没有属主又没有属组的文件(这样的文件通常是很危险的,作为系统工程师的我们应该及时清除掉)

【查找完执行的action】

# -print                                 //默认情况下的动作

# -ls                                     //查找到后用ls 显示出来

# -ok  [commend]                //查找后执行命令的时候询问用户是否要执行

# -exec [commend]              //查找后执行命令的时候不询问用户,直接执行

查找5天前的文件并执行删除

查找权限为775的文件并执行修改成权限777的文件

(ps:{} 用来替代前面rm/chomd 777 所要修改的文件,\;是将;转义不让 -exec去解读)

时间: 2024-12-17 20:37:01

Linux下关于find命令的总结的相关文章

linux下修改rm命令防止误删除

前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. 第一步: 先在home目录下创建一个叫username名字的目录(当然名字可以自定义),具体命令为:sudo mkdir username(自定义的名字) 这时候记得要用命令:sudo chmod 777 username(自定义的名字)来改变一下你的目录权限,因为在home目录下刚创建的目录是没

Linux下使用ps命令来查看Oracle相关的进程

Linux下可以使用ps命令来查看Oracle相关的进程 Oracle Listener 这个命令会列出Oracle Net Listener的进程 [[email protected] www.linuxidc.com ~]$ ps -ef | grep tnslsnr oracle    1999 29986  0 09:47 pts/2    00:00:00 grep tnslsnr oracle    3647     1  0 Jul03 ?        00:00:34 /u01

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

Linux下使用crontab命令以及Python脚本实现自动签到

关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做curl,完全可以完成模拟签到的功能,但是为了练习Python,我就用Python来写了.有这个想法完全是因为实验室的学长开发了一款App,上边收个起床签到,还有排名,为了能那个首签... 言归正传 首先,因为是手机上的App, 所以,我们需要抓包看下它具体的URL以及发送的内容是什么,关于这部分内容我就不在赘述了,我实现的功能主要有模拟发布状态和模拟签到两种功能,两个的URL也是不同的.为了不让学

Linux下常用SVN命令

1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain  --username qinxiaohui 简写:svn co 2.往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下所有的php文件) 3.将改动的文件提交到版本库 svn commit -m "L

Linux下内存查看命令

在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们一般用free命令: $ free             total       used       free     shared    buffers     cachedMem:       3266180    3250004      16176          0     1106

[转] 关于linux下通过shell命令(自动)修改用户密码

关于linux下通过shell命令(自动)修改用户密码 2012-04-23 18:47:39 分类: 原文地址:关于linux下(自动)修改用户密码 作者:ubuntuer 本文章总结了如何手动.自动修改本地用户密码及远程机器的用户密码.对做自动化测试提供了自动修改用户密码的原理及方法. 修改本地用户密码:1.交互配置本地用户:以root用户: passwd <username>Changing password for user dewang.New UNIX password: BAD

[转载]linux下使用tar命令

转自:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html linux下使用tar命令 解压语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项.相当于打包. x 从档案文件中释放文件.相当于拆包. t 列出档案文件的内容,查看已经备份了哪些文件. 特别注意

Linux下好玩的命令

Linux下好玩的命令 1.yes命令,输出很多个y,可以用来对付选择很多y/n的应用. 2.banner命令,打印字符标题,就是用字符拼出大字来: 3.ddate命令,把日历转换成其他的什么历: 4.fortune命令,随机输出一句话,或者是一句英文名言,或者是一首唐诗宋词来,如果没有唐诗宋词,那就需要用fortune-zh 5.cal 9 1752,打印日历,但是这个月非常有意思(在9月2日后居然跳到了14日了),这是有原因的: 在1582年,罗马教皇格列高里十三世宣布改历(由于闰年积累的原

小知识点:linux下的mv命令怎么用?

linux下的mv命令怎么用? mv a.txt b.txt  将a.txt 改名为b.txtmv a.txt /mnt/b.txt    同时更改路径为/mnt/mv a.txt /opt/ftp/    将a.txt  剪切到/opt/ftp/下常用的用法就是以上.