Linux学习-find命令使用

find

在指定目录结构下查找文件命令,find命令所使用的查找参数与文件的属性相对应,

#文件属性对应的查找参数
   d            rwxr-xr-x      2         root       root            6 Jan 20 08:50             abcd
-type            -perm       -size      -user      -group        -atime|-mtime|-ctime      -name|-iname
使用方法

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

-name:通过名称进行查找,区分大小写
[root@base tmp]# find /etc -name 'ifcfg*'
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-ens33
-iname:通过名称查找,不区分大小写
[root@base tmp]# find /etc -iname 'Ifcfg*'
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-ens33
-size:通过文件大小查找
#+5M表示大于5M的文件
[root@base tmp]# find /etc -size +5M -ls
    73 7600 -r--r--r--   1 root     root      7780559 Jul 10  2020 /etc/udev/hwdb.bin
[root@base tmp]# ll -h /etc/udev/hwdb.bin
-r--r--r--. 1 root root 7.5M Jul 10  2020 /etc/udev/hwdb.bin
#先通过dd创建一个5M的文件,进行查找测试, -size 5M表示正好查找大小5M文件
[root@base tmp]# dd if=/dev/zero of=test.txt bs=1M count=5
5+0 records in
5+0 records out
5242880 bytes (5.2 MB) copied, 0.00434053 s, 1.2 GB/s
[root@base tmp]# find /tmp -size 5M 
/tmp/test.txt
-maxdepth:通过目录深度查找
[root@base tmp]# find /etc -maxdepth 2 -name 'ifcfg*'
[root@base tmp]# find /etc -maxdepth 3 -name 'ifcfg*'
/etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-ens33
-user|-group:通过文件属主或属组查找
#按文件属主查找
[root@base tmp]# ll
total 0
-rw-r--r-- 1 root   root   0 Jan 20 19:15 root.txt
-rw-rw-r-- 1 user01 user01 0 Jan 20 19:15 user01.txt
[root@base tmp]# find . -user user01
./user01.txt
#按文件属组查找
[root@base tmp]# find /tmp -user user01
/tmp/user01.txt
[root@base tmp]# find /tmp -group user01
/tmp/user01.txt
-perm:根据权限来查找
#-perm 根据权限查看, -ls表示查找后要执行的动作
[root@base tmp]# find /tmp -perm 644 -ls
68212273   12 -rw-r--r--   1 root     root        12288 Jan 15 08:30 /tmp/.file2.swp
68212268    0 -rw-r--r--   1 root     root            0 Jan 20 19:15 /tmp/root.txt
[root@base tmp]# ll -a
total 12
drwxrwxrwt.  8 root   root     161 Jan 20 19:17 .
dr-xr-xr-x. 19 root   root     246 Jan 18 07:53 ..
-rw-r--r--   1 root   root   12288 Jan 15 08:30 .file2.swp
drwxrwxrwt.  2 root   root       6 Jul 10  2020 .font-unix
drwxrwxrwt.  2 root   root       6 Jul 10  2020 .ICE-unix
drwxr-xr-x   2 root   root       6 Jan 20 19:17 rootdirc
-rw-r--r--   1 root   root       0 Jan 20 19:15 root.txt
drwxrwxrwt.  2 root   root       6 Jul 10  2020 .Test-unix
-rw-rw-r--   1 user01 user01     0 Jan 20 19:15 user01.txt
drwxrwxrwt.  2 root   root       6 Jul 10  2020 .X11-unix
drwxrwxrwt.  2 root   root       6 Jul 10  2020 .XIM-unix
-delete:查找后删除
[root@base tmp]# find /tmp -perm 644 -delete
[root@base tmp]# ll -a
total 0
drwxrwxrwt.  8 root   root   127 Jan 20 19:26 .
dr-xr-xr-x. 19 root   root   246 Jan 18 07:53 ..
drwxrwxrwt.  2 root   root     6 Jul 10  2020 .font-unix
drwxrwxrwt.  2 root   root     6 Jul 10  2020 .ICE-unix
drwxr-xr-x   2 root   root     6 Jan 20 19:17 rootdirc
drwxrwxrwt.  2 root   root     6 Jul 10  2020 .Test-unix
-rw-rw-r--   1 user01 user01   0 Jan 20 19:15 user01.txt
drwxrwxrwt.  2 root   root     6 Jul 10  2020 .X11-unix
drwxrwxrwt.  2 root   root     6 Jul 10  2020 .XIM-unix
同时满足两个或多个条件,直接将所有条件写上去即可
[root@www file]# find /etc -name 'passwd*' -type f
/etc/pam.d/passwd
/etc/passwd
/etc/passwd-
对查找结果执行其他操作
#注:find查找结果后,执行其它命令,需要以;结尾,【\;】中的\表示转义
[root@base tmp]# find /etc -name ifcfg* -ok cp -rvf {} /tmp \;
< cp ... /etc/sysconfig/network-scripts/ifcfg-lo > ? y
‘/etc/sysconfig/network-scripts/ifcfg-lo’ -> ‘/tmp/ifcfg-lo’
< cp ... /etc/sysconfig/network-scripts/ifcfg-ens33 > ? y
‘/etc/sysconfig/network-scripts/ifcfg-ens33’ -> ‘/tmp/ifcfg-ens33’
[root@base tmp]# ls /tmp
ifcfg-ens33  ifcfg-lo  rootdirc  user01.txt
#使用xargs执行find查找后的命令
[root@base //]# find /etc -name ifcfg* | xargs -i cp {} /tmp/
#查找文件后,将查找的结果删除
[root@base tmp]# find /tmp -name '*.gz' | xargs rm -rf {}
问题1:
#执行tar命令打包目录时报以下错误
[root@base tmp]# tar -zcf etc.tar.gz /etc/
tar: Removing leading `/' from member names
解决方法
# 因为我们使用的是绝对路径,而不是相对路径。而tar 命令默认是采用相对路径来进行压缩打包的
#在执行命令时加入【-P | --absolute-names】参数,表示不要从文件名前去除前导【/】
[root@base tmp]# tar -zcPf etc1.tar.gz /etc/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值