Find指令


Linuxfind命令在目录结构中搜索文件,并执行指定的操作。

(速度较慢 遍历文件 真真切切地查找)

1 命令格式 

find pathname -options [-print -exec -ok ...]

2 命令功能

用于在文件树种查找文件,并做出相应处理(可能访问磁盘)

3 命令参数

pathname:find 命令所查找的目录路径。

例如:表示当前目录  用/表示系统根目录

-print : find 命令将匹配的文件输出到标准输出中。

-exec: find命令对匹配的文件执行该菜蔬所给出的shell命令。

相应的命令形式为command  {  } \; 注意{ }\之间的空格。

Linux 中find命令与文件权限 _Linux 

-ok: 和-exec的作用相同,只不过是以一种更安全的模式来执行给出的shell命令,在执每一个命令之前,都会给出提示,让用户来确定是否执行。

4 命令选项:

-name    按照文件名查找文件 

Linux 中find命令与文件权限 _Linux_02 

配合通配符使用

Linux 中find命令与文件权限 _Linux_03 

-perm    按照文件权限来查找文件

Linux 中find命令与文件权限 _Linux_04 

-prune   使用这一选项可以使用find命令不在当前指定目录查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

详见:http://blog.csdn.net/zzxian/article/details/8446703

Linux 中find命令与文件权限 _Linux_05 

-user    按照文件的属主来查找文件。

Linux 中find命令与文件权限 _Linux_06 

-group   按照文件所属的组来查找Linux 中find命令与文件权限 _Linux_07

-mtime   -n +n 按照文件更改时间来查找

n  n天先前1

Linux 中find命令与文件权限 _Linux_08 

find ./ -mtime 4 

        -n 表示文件的更改时间距离现在n天以内

        +n 表示文件的更改时间距离现在n天以前

Linux 中find命令与文件权限 _Linux_09Linux 中find命令与文件权限 _Linux_10Linux 中find命令与文件权限 _Linux_11 

find命令还有-atime 和 -ctime选项 但它们和-m time选项相同

 

-nogroup 查找无有效所属组的的文件,即该文件的所属组在/etc/groups中不存在Linux 中find命令与文件权限 _Linux_12

-nouser   查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在

Linux 中find命令与文件权限 _Linux_13 

-newer file1 ! -newer file2  查找更改时间比文件file1新但比file2旧的文件

Linux 中find命令与文件权限 _Linux_14 

-type 查找某一类型的文件,诸如:

b - 块设备文件

Linux 中find命令与文件权限 _Linux_15 

d - 目录

Linux 中find命令与文件权限 _Linux_16 

c -字符设备文件

Linux 中find命令与文件权限 _Linux_17 

p - 管道文件

l - 符号链接文件

Linux 中find命令与文件权限 _Linux_18 

f - 普通文件

Linux 中find命令与文件权限 _Linux_19 

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计算

查找大小小于1kb的文件

Linux 中find命令与文件权限 _Linux_20 

-depth :在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

参数-depth 的意思是:在处理目录以前首先处理目录下的子内容。
也即是说在不加-depth的时候, 处理顺序是首先处理目录本身,然后处理目录下的子内容。加不加-depth参数,会影响输出结构的输出顺序。

Linux 中find命令与文件权限 _Linux_21 

-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount

-follow : 如果find命令遇到符号链接文件,就跟踪到链接所指向的文件。Linux 中find命令与文件权限 _Linux_22-cpio: 对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外:

下面三个的区别:

-建时间来查找文件, -nn天以内  +n n天以前

 

例子

1 在/logs目录中查找更改时间在5月以前的文件并删除它们

2 Linux用find命令查找文件大小为XX的文件的方法

Linux 中find命令与文件权限 _Linux_23 

 

http://blog.chinaunix.net/uid-24648486-id-2998767.html

#-name 根据文件名查找(精确查找)

#-iname 根据文件名查找,但不区分大小写

Linux 中find命令与文件权限 _Linux_24 

*表示通配任意的字符

Linux 中find命令与文件权限 _Linux_25 

?表示通配任意的单个字符

Linux 中find命令与文件权限 _Linux_26 

[ ]表示 通配括号里面的任意一个字符

Linux 中find命令与文件权限 _Linux_27 

#-a 连接两个不同条件(两个条件必须同时满足 and 与)

Linux 中find命令与文件权限 _Linux_28 

#-o (or 或)

Linux 中find命令与文件权限 _Linux_29 

#-not (!)

Linux 中find命令与文件权限 _Linux_30 

#-atime #-mtime #-ctime #-amin #-mmin #-cmin

所以这里atime,mtime,ctime就是分别对应的“最近一次访问时间”“最近一次内容修改时间”“最近一次属性修改时间”,这里的atime的单位指的是“天”,amin的单位是分钟

Linux 中find命令与文件权限 _Linux_31 

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

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

Linux 中find命令与文件权限 _Linux_32

Linux 中find命令与文件权限 _Linux_33


---------------------------------------------------------------------------------


权限与指令之间的关系


1. 让用户能进入目录成为【可工作目录】的基本权限为何:

可使用的指令:例如cd等变换工作目录的指令;

目录所需权限:用户对这个目录至少需要具有x的权限;


Linux 中find命令与文件权限 _Linux_34

额外需求:如果用户想要在这个目录内用ls查阅文件名,则用户对此目录还需要r的权限。

Linux 中find命令与文件权限 _Linux_35

Linux 中find命令与文件权限 _Linux_36

2. 用户在某个目录内读取一个档案的基本权限为何?

   可使用的指令: 例如cat,more,less等;

   目录所需要的权限:用户对这个目录至少需要x权限;(进入)

档案所需要的权限: 使用者对档案至少需要具有r的权限才行!

Linux 中find命令与文件权限 _Linux_37

Linux 中find命令与文件权限 _Linux_38

------特殊

Linux 中find命令与文件权限 _Linux_39

Linux 中find命令与文件权限 _Linux_40

3. 让使用者修改一个档案的基本权限为何?

   可使用的指令: 例如nano或vim等

目录所需要的权限: 用户在该档案所在目录至少要有rw权限

4. 让一个使用者可以建立一个档案的基本权限为何?

目录所需权限:用户在该目录要有wx权限,

5. 让用户进入目录并执行该目录下的某个指令之基本权限为何?

目录所需权限:用户在该目录至少需要有x权限。

档案所需权限:使用者在该档案下至少需要有x权限。


让一个使用者能够进行【cp /fir1/file /dir2】的指令,请说明dir1,file1,dir2的最小所需权限为何?

· dir1 :至少需要有 x 权限; 

· file1:至少需要有 r 权限; 

· dir2 :至少需要有 w, x 权限。