Linux命令之find文件查找

 find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法

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   -name   查找某个文件,文件名为name

例如:

find /etc/ -name  abc    查找/etc/目录下名为abd的文件并输出

find /etc -name *.conf   查找/etc/目录下所有以.conf结尾的文件

find /etc -name  VBM   查找/etc/目录下所有以VBM开头的文件


find  -user  name   查找某个文件所有人为user的文件

find -group  name  查找某个文件所有组为group的文件

find  -user name1 -group name2,查找文件所有人为name1且所有组为name2的文件

find -not -user name 查找文件所有人不为name的文件 (-not表示反的意思)

find -not -user test-o -group root 查找文件所有人不为test或者文件所有组为root的文件   -o表示或者

 

find /etc -maxdepth 1 -name passwd   查找此目录最多下一级目录的文件passwd
find /etc -maxdepth 2 -mindepth 2 -name *.conf查找/etc下最多两级且最少两极的目录的以.conf结尾的文件

测试:

find /home/work -size 20K     查找20K的文件
find /home/work -size -20K    查找小于20K的文件
find /mnt -size +20K    查找大于20K的文件

测试:在/home/work/下给file1 file2 写入不同大小,然后测试以上命令

dd if=/dev/zero of=/home/work/file1 bs=1 count=10240

dd if=/dev/zero of=/home/work/file1 bs=1 count=20480

运行结果:

[root@glkjdevapp work]# find /home/work -size +9k;
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1

 

find -type  查找文件类型
find /home/work -type d    查找目录
find /home/work -type f     查找文件

运行结果:

[root@glkjdevapp work]# find /home/work -size +9k;
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1
[root@glkjdevapp work]# find /home/work -type d  
/home/work
[root@glkjdevapp work]# find /home/work -type f
/home/work/VBM_ROM7.0.TEST.war
/home/work/file1.txt
/home/work/file2.txt
/home/work/file1

 

find /home/work -cmin 10   查找整10分钟前操作的文件
find /home/work -cmin -10  查找10分钟内操作的文件
find /home/work -cmin +10  查找10分钟前操作的文件

find -perm
测试,创建文件:touch /home/work/file {1..5}

分配权限:
 chmod 000 *
 chmod 404 file1
 chmod 444 file2
 chmod 644 file3
 chmod 640 file4

find /home/work/ -perm 444  查找权限为444的文件,所以查找到的文件是file2

[root@glkjdevapp work]# find /home/work/ -perm 444
/home/work/file2

find /home/work/ -perm -444 查找权限包括444的文件,因为444是r--r--r--,644是rw-r--r--,所以644包含444,所以查找到的文件是file2和file3.

[root@glkjdevapp work]# find /home/work/ -perm -444
/home/work/
/home/work/file2
/home/work/file3

find /home/work -perm /444 查找 o权限包括r或g权限包括r或o权限包括r的文件,即只要包含r即可,所以查找到的文件是file1 file2 file3 file4。

[root@glkjdevapp work]# find /home/work -perm /444
/home/work
/home/work/file1
/home/work/file2
/home/work/file3
/home/work/file4

find -exec command {}  {}表示查找到的文件

例如:find /home/work -perm 444 -exec rm -rf {} \;整体这个命令的意思是,删除权限为444的文件

find /etc -name *.conf -exec cp -rp {} /home/work\;递归复制/etc下以.conf结尾的文件到/home/work

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值