Shell find命令详解
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
参考网址:https://www.cnblogs.com/chyingp/p/linux-command-find.html
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 : find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。 expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。 -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket -pid n : process id 是 n 的文件 你可以使用 ( ) 将运算式分隔,并使用下列运算。 exp1 -and exp2 ! expr -not expr exp1 -or exp2 exp1, exp2
查找文件 find ./ -type f 查找目录 find ./ -type d 查找名字为test的文件或目录 find ./ -name test 查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录) find ./ -regex .*so.*\.gz 查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称) find ./ -type d -print -exec ls {} \; 查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,执行命令前需要确认) find ./ -type d -ok ls {} \; 查找目录并列出目录下的文件(将找到的目录添加到ls命令后一次执行,参数过长时会分多次执行) find ./ -type d -exec ls {} + 查找文件名匹配*.c的文件 find ./ -name \*.c 打印test文件名后,打印test文件的内容 find ./ -name test -print -exec cat {} \; 不打印test文件名,只打印test文件的内容 find ./ -name test -exec cat {} \; 查找文件更新日时在距现在时刻二天以内的文件 find ./ -mtime -2 查找文件更新日时在距现在时刻二天以上的文件 find ./ -mtime +2 查找文件更新日时在距现在时刻一天以上二天以内的文件 find ./ -mtime 2 查找文件更新日时在距现在时刻二分以内的文件 find ./ -mmin -2 查找文件更新日时在距现在时刻二分以上的文件 find ./ -mmin +2 查找文件更新日时在距现在时刻一分以上二分以内的文件 find ./ -mmin 2 查找文件更新时间比文件abc的内容更新时间新的文件 find ./ -newer abc 查找文件访问时间比文件abc的内容更新时间新的文件 find ./ -anewer abc 查找空文件或空目录 find ./ -empty 查找空文件并删除 find ./ -empty -type f -print -delete 查找权限为644的文件或目录(需完全符合) find ./ -perm 664 查找用户/组权限为读写,其他用户权限为读(其他权限不限)的文件或目录 find ./ -perm -664 查找用户有写权限或者组用户有写权限的文件或目录 find ./ -perm /220 find ./ -perm /u+w,g+w find ./ -perm /u=w,g=w 查找所有者权限有读权限的目录或文件 find ./ -perm -u=r 查找用户组权限有读权限的目录或文件 find ./ -perm -g=r 查找其它用户权限有读权限的目录或文件 find ./ -perm -o=r 查找所有者为lzj的文件或目录 find ./ -user lzj 查找组名为gname的文件或目录 find ./ -group gname 查找文件的用户ID不存在的文件 find ./ -nouser 查找文件的组ID不存在的文件 find ./ -nogroup 查找有执行权限但没有可读权限的文件 find ./ -executable \! -readable 查找文件size小于10个字节的文件或目录 find ./ -size -10c 查找文件size等于10个字节的文件或目录 find ./ -size 10c 查找文件size大于10个字节的文件或目录 find ./ -size +10c 查找文件size小于10k的文件或目录 find ./ -size -10k 查找文件size小于10M的文件或目录 find ./ -size -10M 查找文件size小于10G的文件或目录 find ./ -size -10G
1、find . -name "*.sh" 查找在当前目录(及子目录)下找以sh结尾的文件。 2、find . -perm 755 查找在当前目录(及子目录)下找属性为755的文件。 3、find -user root 查找在当前目录(及子目录)下找属主为root的文件。 4、find /var -mtime -5 查找在/var下找更改时间在5天以内的文件。 5、find /var -mtime +3 查找在/var下找更改时间在3天以前的文件。 6、find /etc -type l 查找在/etc下查找文件类型为|的链接文件。 7、find . -size +1000000c 查找在当前目录(及子目录)下查找文件大小大于1M的文件,1M是1000000个字节。 8、find . -perm 700 |xargs chmod 777 查找出当前目录(及子目录)下所有权限为700的文件,并把其权限重设为777。 9、find . -type f |xargs ls -l 查找出文件并查看其详细信息。
[root@alwen shell]# find /opt -name '*.sh'|xargs ls -l
-rwxrwxr-x+ 1 root root 132 Jun 4 16:35 /opt/ftp.sh
-rwxrwxr--+ 1 lamp root 58 May 31 19:27 /opt/mydirA/test.sh
-rwxrwxr-x+ 1 root root 113 Jun 5 05:01 /opt/mydirA/us.sh
-rwxrwxr--+ 1 root root 138 Jun 7 20:55 /opt/shell/add_user.sh
-rwxrwxr--+ 1 root root 79 Jun 7 20:56 /opt/shell/del_user.sh
-rwxrwxr--+ 1 root root 146 Jun 7 21:03 /opt/shell/extract_user.sh
-rwxr-xr-x. 1 root root 269 Jun 7 21:31 /opt/shell/own_file_nums.sh
-rwxrwxr-x+ 1 root root 76 Jun 7 20:13 /opt/shell/sh01.sh
-rwxr--r--. 1 root root 188 Jun 8 02:46 /opt/shell/shift.sh
-rwxrwxr--+ 1 root root 120 Jun 7 20:11 /opt/shell/while.sh
-rwxrwxr--+ 1 lamp root 397 Jun 1 17:06 /opt/test01.sh
-rwxrwxr--+ 1 lamp root 382 Jun 1 16:59 /opt/test.sh
根据文件类型查找
通过-type进行文件类型的过滤。
- f 普通文件
- l 符号连接
- d 目录
- c 字符设备
- b 块设备
- s 套接字
- p Fifo
根据文件大小
通过-size来过滤文件尺寸。支持的文件大小单元如下
- b —— 块(512字节)
- c —— 字节
- w —— 字(2字节)
- k —— 千字节
- M —— 兆字节
- G —— 吉字节

浙公网安备 33010602011771号