find命令详解

find参数

格式:find    pathname    -options    [-print]
    命令字   路径名称        选项        输出
pathname:  find命令所查找的目录路径,不输入代表当前目录例如用 . 来表示当前目录,用 / 来表示系统根目录。
find命令选项:
-name 	按照文件名查找文件。  “名称”
-perm 	按照文件权限来查找文件。666 777 等
-user 	按照文件属主来查找文件
-group 	按照文件所属的组来查找文件
-mtime  -n  / +n 	按照文件的更改时间来查找文件,
			 - n	表示文件更改时间距现在n天以内
			 + n	表示文件更改时间距现在n天以前
-type 	查找某一类型的文件
			b - 块设备文件
			d - 目录
			c - 字符设备文件
			p - 管道文件
			l- 符号链接文件
			f - 普通文件
-size n  查找符合指定的文件大小的文件
-exec	   对匹配的文件执行该参数所给出的其他linux命令, 相应命令的形式为' 命令 {} \;,
注意{ }和 \;之间的空格,{}代表查到的内容   

find命令的8大实例

例1:查看当前目录下所有的TXT格式的文件
[root@break test]# find . -name "*.txt"
./a.txt
./b.txt
./c.txt
./1.txt
./3.txt
./4.txt
./12.txt
./a.txt
2、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项
		mtime:  文件最后一次修改的时间
		atime:  最后一次访问时间
		ctime:  文件的最后一次变化时间,也就是修改时间
例1:希望在root目录下查找更改时间在1天以内,被黑客修改的文件
[root@break test]# find / -mtime 1
find: ‘/proc/2431/task/2431/fd/5’: 没有那个文件或目录
find: ‘/proc/2431/task/2431/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/2431/fd/6’: 没有那个文件或目录
find: ‘/proc/2431/fdinfo/6’: 没有那个文件或目录
/etc/adjtime
/root/test/a.txt
/root/1.txt
/root/.a.txt.swo
/root/.a.txt.swp
/var/lib/unbound/root.key
/home/du/.local/share
/home/du/.local/share/app-info
3、对查找内容执行相应命令
-exec    这个选项参数后面可以跟自定义的SHELL命令,格式如下:命令 {} \;,
例2:查找并显示当前目录下的以back结尾的文件
[root@break test]# find . -name "*.back" -exec ls -l {} \;
-rw-r--r--. 1 root root 0 3月  28 14:01 ./1.back
-rw-r--r--. 1 root root 0 3月  28 14:01 ./2.back
-rw-r--r--. 1 root root 0 3月  28 14:01 ./3.back
例3:移动到/opt/下将找到的back文件结尾的内容
[root@break test]# find . -name "*.back" -exec mv {} /opt/ \;
[root@break test]# ls -al *.back
ls: 无法访问*.back: 没有那个文件或目录
[root@break test]# ls /opt
1.back  1.txt  2.back  2.txt  3.back  3.txt  4.txt  a.txt  back  b.txt  cpu.txt  c.txt  rh  success.txt  xuegod.txt
例4:把查找到的文件复制到一个指定的目录
[root@break test]# find . -name "*.back" -exec cp {} /opt/back  \;
[root@break test]# cd /opt/back/
[root@break back]# ls 
100.back  17.back  24.back  31.back  39.back  46.back  53.back  60.back  68.back  75.back  82.back  8.back   97.back
10.back   18.back  25.back  32.back  3.back   47.back  54.back  61.back  69.back  76.back  83.back  90.back  98.back
11.back   19.back  26.back  33.back  40.back  48.back  55.back  62.back  6.back   77.back  84.back  91.back  99.back
12.back   1.back   27.back  34.back  41.back  49.back  56.back  63.back  70.back  78.back  85.back  92.back  9.back
13.back   20.back  28.back  35.back  42.back  4.back   57.back  64.back  71.back  79.back  86.back  93.back  back.tar
14.back   21.back  29.back  36.back  43.back  50.back  58.back  65.back  72.back  7.back   87.back  94.back
15.back   22.back  2.back   37.back  44.back  51.back  59.back  66.back  73.back  80.back  88.back  95.back
16.back   23.back  30.back  38.back  45.back  52.back  5.back   67.back  74.back  81.back  89.back  96.back

例5:xargs和find命令结合 复制文件    -i  表示 find 传递给xargs的结果 由{}来代替  (了解)
也就是说,-exec ==| xargs -i 并且去掉\;
[root@break test]# find . -name "*.back" | xargs -i cp {} /opt 
[root@break test]# cd /opt/
[root@break opt]# ls
100.back  17.back  24.back  31.back  39.back  46.back  53.back  60.back  68.back  75.back  82.back  8.back   ...
例6:查找多个类型文件
比较符的使用:
	-a  and 并且
	-o  or  或者
	+  超过
	-   低于
#同时找到2种不同的文件
[root@break test]# touch a.sh b.hs
[root@break test]# find . -name "*.sh" -o -name "*.hs"
./a.sh
./b.hs
#查找大于20K的文件,小于50K的文件
[root@break test]# find /etc -size +20k -a -size -50k
/etc/selinux/targeted/active/modules/100/apache/hll
/etc/selinux/targeted/active/modules/100/init/hll
/etc/selinux/targeted/active/modules/100/staff/cil

例7:  按权限查找:-perm
[root@break test]# find /bin -perm -644
/bin
查找文件的777文件
[root@break test]# find / -type f -perm 777
find: ‘/proc/5013/task/5013/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/5013/fdinfo/6’: 没有那个文件或目录

例8:查找的目录深度:
-maxdepth 1  #只查找目录第一层的文件和目录
如:查找/bin目录下权限至少为111的普通文件。
[root@break test]# find /bin/ -maxdepth 1 -type f -perm 111
/bin/sudoreplay
例9:查找系统中所有属于用户du的文件,并把这个文件,放到/root/findresults目录下
[root@break ~]# mkdir findresults 
[root@break ~]# find / -user du -exec cp -a {} /root/findresults/ \;
find: ‘/proc/5872/task/5872/fd/5’: 没有那个文件或目录
find: ‘/proc/5872/task/5872/fdinfo/5’: 没有那个文件或目录
find: ‘/proc/5872/fd/6’: 没有那个文件或目录
find: ‘/proc/5872/fdinfo/6’: 没有那个文件或目录
cp: 无法以目录"/home/du" 来覆盖非目录"/root/findresults/du"
出现这种错误,是因为你要将不同目录,但名字相同的文件,放到同一文件下。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值