Linux(三)----find
2016-05-15 20:00
357 查看
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个非常大的文件系统可能会花费很多的时间(这里是指30G字节以上的文件系统)。
1.命令格式:
find PATH [options][action]
2.命令功能:
用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
3.选项与参数:
1.与时间有关的选项:共有 -atime , -ctime , -mtime ,以 -mtime为例
-mtime n : n为数字,意义为在 n 天之前的 [ 一天之内 ] 被更动过内容的档案;
-mtime +n : 列出在 n 天之前(不含n天本身)被更动过内容的档案档名;
-mtime -n : 列出在 n 天之内(含n天本身)被更动过内容的档案档名;
-newer file : file 为一个存在的档案,列出比 file 还要新的档案档名;
举例1:
#find / -mtime 0
0 表示目前时间,所以,从现在开始到24小时前,有变动过内容的档案都会被列出来!如果是三天之前的24小时内,则被表示为 # find / -mtime 3
举例2:
#find /etc -newer /etc/passwd
-newer 用在分辨两个档案之间的新旧关系是很有用的!
我们现在知道 atime ,ctime ,mtime 的意义,如果你想找出一天内被更改过的文件名,可以用举例1 的做法,但如果我想要找出『 4 天内被更改过的档案档名』呢?那可以使用『find /var -mtime -4 』。那如果是『 4 天前的那一天』就用『find /var -mtime 4 』。有没有加上『 +, -』差别很大!我们可以用简单的图示来说明一下
find相关的时间参数的意义
图中最右边为目前的时间,越往左边则代表越早前的时间轴啦。由图我们可以清楚的知道:
+4 代表大于等于 5 天前的档名:ex> find /var -mtime +4
-4 代表小于等于4 天内的档名:ex> find /var -mtime -4
4 则是代表 4-5 那一天档名:ex> find /var -mtime 4
2.与使用者或组名有关的参数:
-uid n : n 为数字,这个数字是用户的账号ID,即UID,
这个UID是记录在 /etc/passwd 里面与账号名称对应的数字。
-gid n : n 为数字,这个数字是组名的ID,即GID, 这个GID是记录在 /etc/group 里面-uesr name : name 为使用者账号名称-group name : name 为组名-nouser : 寻找档案的拥有者不存在 /etc/passwd 的人-nogroup : 寻找档案的拥有群组不存在与 /etc/group 的档案 当你自行安装软件时,很可能改软件的属性中并咩有档案拥有者,这是可能的!在这个时候,就可以使用 -nouser 和 -nogroup 搜寻。举例3:#find /home -user zyn搜寻 /home 下属于zyn 的档案
举例4:#find / -nouser找到系统不属于任何人的档案如果你将系统里的某个账号删除了,但该账号已经在系统里面建立很多档案时,就可能发生无主孤魂的档案讯在,此时你就可以用 -nouser 来找出该类型的档案并删除了。
3.与档案权限及名称有关的参数:- name filename : 搜寻文件名为 filename 的档案;-size [ +- ] SIZE : 搜寻比 SIZE 还要大或小的档案,这个 SIZE 的规格有:c 代表byte ,k 代表 1024bytes, 所以,要找比50KB 还要打的档案,就是 [ -size + 50K ];-type TYPE : 搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案(f), 装置档案 (b,c),目录(d),连接档案(l),scoket(s),及 FIFO (p)等属性。-perm mode : 搜寻档案权限 【刚好等于】 mode 的档案,这个mode 为类似 chmod 的属 性值,举例: -rwsr-xr-x ,即4755,-perm -mode : 搜寻档案权限【必须要全部囊括 mode的权限】的档案,举例:要搜寻 -rwxr--r-- ,即0744的档案,使用 -perm -0744,当一个档案的权限为 -rwsr-xr-x ,即4755时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwsr-xr-x 的属性了。-perm +mode : 搜寻档案权限【包括任意mode的权限】的档案, 举例:搜寻 -rwxr-xr-x , 即 -perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他 有-rw-------的属性存在!举例5:#find /-name passwd找出档名为passwd 的这个档案
举例6:#find /var -type s找出 /var 目录下,文件类型为scoket的档名有哪些?
举例7:#find /-perm +7000搜寻档案中含有SUID 或 SGID 或 SBIT 属性的所谓7000 就是 ---s--s--t ,那么只要有s或者t的就列出来, -7000 就是要含有---s--s--t 三个权限
4.额外可进行的动作:-exec command : command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的 结果。-print : 将结果打印到屏幕上,这个动作是预设动作!举例8:#find /-perm +7000 -exec ls -l{} \;将上个例子找到的档案使用 ls -l 列出来 ls -l 就是额外的指令,指令不支持命令别名,所以不能用 ll
举例9:#find / -size +1000k找出大于1MB的档案
find的特殊功能就是能够进行额外的动作(action),我们将例8用途来说明一下;
{}代表的是有find找到的内容,如上图所示,find结果会被放到{} 位置中
-exec一直到 \; 是关键词,代表find额外动作的开始(-exec)到结束(\;),在这中间的就是find 指令内的额外动作,在本例中就是【 ls -l{} 】.因为【 ;】在bash下是有特殊意义的,因此利用反斜杠来跳脱。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个非常大的文件系统可能会花费很多的时间(这里是指30G字节以上的文件系统)。
1.命令格式:
find PATH [options][action]
2.命令功能:
用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
3.选项与参数:
1.与时间有关的选项:共有 -atime , -ctime , -mtime ,以 -mtime为例
-mtime n : n为数字,意义为在 n 天之前的 [ 一天之内 ] 被更动过内容的档案;
-mtime +n : 列出在 n 天之前(不含n天本身)被更动过内容的档案档名;
-mtime -n : 列出在 n 天之内(含n天本身)被更动过内容的档案档名;
-newer file : file 为一个存在的档案,列出比 file 还要新的档案档名;
举例1:
#find / -mtime 0
0 表示目前时间,所以,从现在开始到24小时前,有变动过内容的档案都会被列出来!如果是三天之前的24小时内,则被表示为 # find / -mtime 3
举例2:
#find /etc -newer /etc/passwd
-newer 用在分辨两个档案之间的新旧关系是很有用的!
我们现在知道 atime ,ctime ,mtime 的意义,如果你想找出一天内被更改过的文件名,可以用举例1 的做法,但如果我想要找出『 4 天内被更改过的档案档名』呢?那可以使用『find /var -mtime -4 』。那如果是『 4 天前的那一天』就用『find /var -mtime 4 』。有没有加上『 +, -』差别很大!我们可以用简单的图示来说明一下
find相关的时间参数的意义
图中最右边为目前的时间,越往左边则代表越早前的时间轴啦。由图我们可以清楚的知道:
+4 代表大于等于 5 天前的档名:ex> find /var -mtime +4
-4 代表小于等于4 天内的档名:ex> find /var -mtime -4
4 则是代表 4-5 那一天档名:ex> find /var -mtime 4
2.与使用者或组名有关的参数:
-uid n : n 为数字,这个数字是用户的账号ID,即UID,
这个UID是记录在 /etc/passwd 里面与账号名称对应的数字。
-gid n : n 为数字,这个数字是组名的ID,即GID, 这个GID是记录在 /etc/group 里面-uesr name : name 为使用者账号名称-group name : name 为组名-nouser : 寻找档案的拥有者不存在 /etc/passwd 的人-nogroup : 寻找档案的拥有群组不存在与 /etc/group 的档案 当你自行安装软件时,很可能改软件的属性中并咩有档案拥有者,这是可能的!在这个时候,就可以使用 -nouser 和 -nogroup 搜寻。举例3:#find /home -user zyn搜寻 /home 下属于zyn 的档案
举例4:#find / -nouser找到系统不属于任何人的档案如果你将系统里的某个账号删除了,但该账号已经在系统里面建立很多档案时,就可能发生无主孤魂的档案讯在,此时你就可以用 -nouser 来找出该类型的档案并删除了。
3.与档案权限及名称有关的参数:- name filename : 搜寻文件名为 filename 的档案;-size [ +- ] SIZE : 搜寻比 SIZE 还要大或小的档案,这个 SIZE 的规格有:c 代表byte ,k 代表 1024bytes, 所以,要找比50KB 还要打的档案,就是 [ -size + 50K ];-type TYPE : 搜寻档案的类型为 TYPE 的,类型主要有:一般正规档案(f), 装置档案 (b,c),目录(d),连接档案(l),scoket(s),及 FIFO (p)等属性。-perm mode : 搜寻档案权限 【刚好等于】 mode 的档案,这个mode 为类似 chmod 的属 性值,举例: -rwsr-xr-x ,即4755,-perm -mode : 搜寻档案权限【必须要全部囊括 mode的权限】的档案,举例:要搜寻 -rwxr--r-- ,即0744的档案,使用 -perm -0744,当一个档案的权限为 -rwsr-xr-x ,即4755时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwsr-xr-x 的属性了。-perm +mode : 搜寻档案权限【包括任意mode的权限】的档案, 举例:搜寻 -rwxr-xr-x , 即 -perm +755 时,但一个文件属性为 -rw------- 也会被列出来,因为他 有-rw-------的属性存在!举例5:#find /-name passwd找出档名为passwd 的这个档案
举例6:#find /var -type s找出 /var 目录下,文件类型为scoket的档名有哪些?
举例7:#find /-perm +7000搜寻档案中含有SUID 或 SGID 或 SBIT 属性的所谓7000 就是 ---s--s--t ,那么只要有s或者t的就列出来, -7000 就是要含有---s--s--t 三个权限
4.额外可进行的动作:-exec command : command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的 结果。-print : 将结果打印到屏幕上,这个动作是预设动作!举例8:#find /-perm +7000 -exec ls -l{} \;将上个例子找到的档案使用 ls -l 列出来 ls -l 就是额外的指令,指令不支持命令别名,所以不能用 ll
举例9:#find / -size +1000k找出大于1MB的档案
find的特殊功能就是能够进行额外的动作(action),我们将例8用途来说明一下;
{}代表的是有find找到的内容,如上图所示,find结果会被放到{} 位置中
-exec一直到 \; 是关键词,代表find额外动作的开始(-exec)到结束(\;),在这中间的就是find 指令内的额外动作,在本例中就是【 ls -l{} 】.因为【 ;】在bash下是有特殊意义的,因此利用反斜杠来跳脱。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍