文件查找

2019-12-17 16:04:38来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

文件查找

文件查找

grep: 文件内容过滤
find: 文件查找,针对文件名

一、命令文件
# which ls //从PATH环境变量 (echo $PATH)
# whereis vim

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/htop/bin/:/root/bin

二、任意文件
A. locate (查询的数据库: /var/lib/mlocate/mlocate.db)
计划任务:每天自动更新数据库 /etc/cron.daily/mlocate.cron
手动更新数据库:updatedb
# locate ifcfg-eth0
# locate ifcfg-enp0s25

B. find
find [options] [path...] [expression] [action]

===expression===
按文件名:
[root@CentOS7 ~]# find /etc -name "ifcfg-eth0"
[root@CentOS7 ~]# find /etc -iname "ifcfg-eth0" //-i忽略大小写
[root@CentOS7 ~]# find /etc -iname "ifcfg-eth*"

按文件大小:
[root@CentOS7 ~]# find /etc -size +5M //大于5M
[root@CentOS7 ~]# find /etc -size 5M
[root@CentOS7 ~]# find /etc -size -5M
[root@CentOS7 ~]# find /etc -size +5M -ls //-ls找到的处理动作

指定查找的目录深度:
-maxdepth levels
-mindepth levels
[root@CentOS7 ~]# find / -maxdepth 3 -a -name "ifcfg-eth0"

按时间找(atime,mtime,ctime):
[root@CentOS7 ~]# find /etc -mtime +5 //修改时间超过5天
[root@CentOS7 ~]# find /etc -mtime 5 //修改时间等于5天
[root@CentOS7 ~]# find /etc -mtime -5 //修改时间5天以内

按文件属主、属组找:
[root@CentOS7 ~]# find /home -user jack //属主是jack的文件
[root@CentOS7 ~]# find /home -group hr //属组是hr组的文件
[root@CentOS7 ~]# find /home -user jack -group hr
[root@CentOS7 ~]# find /home -user jack -a -group hr
[root@CentOS7 ~]# find /home -user jack -o -group hr

[root@CentOS7 ~]# find /home -nouser
[root@CentOS7 ~]# find /home -nogroup
[root@CentOS7 ~]# find /home -nouser -o -nogroup

按文件类型:
[root@CentOS7 ~]# find /dev -type f //f普通
[root@CentOS7 ~]# find /dev -type d //d目录
[root@CentOS7 ~]# find /dev -type l //l链接
[root@CentOS7 ~]# find /dev -type b //b块设备
[root@CentOS7 ~]# find /dev -type c //c字符设备
[root@CentOS7 ~]# find /dev -type s //s套接字
[root@CentOS7 ~]# find /dev -type p //p管道文件

按文件权限:
[root@CentOS7 ~]# find . -perm 644 -ls
[root@CentOS7 ~]# find . -perm -644 -ls
[root@CentOS7 ~]# find . -perm -600 -ls
[root@CentOS7 ~]# find . -perm -222 -ls //全局可写
[root@CentOS7 ~]# find /usr/bin /usr/sbin -perm -4000 -ls //包含set uid
[root@CentOS7 ~]# find /usr/bin /usr/sbin -perm -2000 -ls //包含set gid
[root@CentOS7 ~]# find /usr/bin /usr/sbin -perm -1000 -ls //包含sticky

按正则表达式:
-regex pattern
[root@CentOS7 ~]# find /etc -regex '.*ifcfg-eth[0-9]'
.* 任意多个字符
[0-9] 任意一个数字

[root@localhost ~]# find /etc -regex '.*ifcfg-enp0s25'
/etc/sysconfig/network-scripts/ifcfg-enp0s25

[root@localhost ~]# find /etc -regex '.*ifcfg-enp0s[0-9]+'
/etc/sysconfig/network-scripts/ifcfg-enp0s25


==找到后处理的动作 ACTIONS: (默认动作-print)==
-print
-ls
-delete
-exec 后面跟自定义的shell命令
-ok 后面跟自定义的shell命令
[root@CentOS7 ~]# find /etc -name "ifcfg*"
[root@CentOS7 ~]# find /etc -name "ifcfg*" -print
[root@CentOS7 ~]# find /etc -name "ifcfg*" -ls
[root@CentOS7 ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@CentOS7 ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

[root@CentOS7 ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@CentOS7 ~]# find /etc -name "ifcfg*" -delete

扩展知识:find结合xargs
[root@CentOS7 ~]# find . -name "yang*.txt" |xargs rm -rf
[root@CentOS7 ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp


find作业:
1. 将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变

2. 将/etc目录复制到/var/tmp/
将/var/tmp/etc中的所有目录设置权限777(仅目录)
将/var/tmp/etc中所有文件权限设置为666

3. 以下命令的区别是什么?
[root@CentOS7 ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@CentOS7 ~]# find /etc -name "ifcfg*" -exec rm -rf {} \+
终结符有两个:“;”和“+”。
其中“;”会对每一个find到的文件去执行一次cmd命令。而”+“让find到的文件一次性执行完cmd命令。

案例1:
[root@CentOS7 ~]# mkdir dir1
[root@CentOS7 ~]# touch dir1/file{1..20}

[root@CentOS7 ~]# find /root/dir1 -name "file5"
[root@CentOS7 ~]# find /root/dir1 ! -name "file5"

[root@CentOS7 ~]# find /root/dir1 -name "file5" -o -name "file9"
/root/dir1/file5
/root/dir1/file9

[root@CentOS7 ~]# find /root/dir1 -name "file5" -o -name "file9" -ls
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9

[root@CentOS7 ~]# find /root/dir1 -name "file5" -ls -o -name "file9" -ls
1466499 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file5
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9

[root@CentOS7 ~]# find /root/dir1 \( -name "file5" -o -name "file9" \) -ls
1466499 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file5
1466515 0 -rw-r--r-- 1 root root 0 6月 5 11:15 /root/dir1/file9

[root@localhost ~]# find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;
removed ‘/root/dir1/file5’
removed ‘/root/dir1/file9’

文件打包及压缩

建议针对目录cd yang

Demo: 复制未打包的文件到远程主机
[root@yangs ~]# du -sh /etc
39M /etc
[root@yangs ~]# time scp -r /etc root@192.168.5.32:/tmp //将/etc目录...

===打包,压缩===
[root@yangs ~]# tar -czf etc1.tar.gz /etc //-z 调用gzip
[root@yangs ~]# tar -cjf etc2.tar.bz2 /etc //-j 调用bzip2
[root@yangs ~]# tar -cJf etc3.tar.xz /etc //-J 调用xz
[root@yangs ~]# ll -h etc*
-rw-r--r--. 1 root root 8.7M 3月 12 00:08 etc1.tar.gz
-rw-r--r--. 1 root root 7.5M 3月 12 00:08 etc2.tar.bz2
-rw-r--r--. 1 root root 4.8M 3月 12 00:09 etc3.tar.xz

===解压,解包===
[root@yangs ~]# tar -tf sys.tar.xz
[root@yangs ~]# tar -xzvf etc1.tar.gz
[root@yangs ~]# tar -xvf etc1.tar.gz //无需指定解压工具,tar会自动判断
[root@yangs ~]# tar -xvf etc2.tar.bz2 -C /tmp //-C重定向到//tmp目录
[root@yangs ~]# tar xf etc3.tar.xz


==解压zip
[root@yangs ~]# unzip xxx.zip
====================================================================================

案例1:mysql物理备份及恢复
[root@localhost ~]# tar -cJf /backup/mysql.tar.xz /var/lib/mysql
[root@localhost ~]# tar -xf /backup/mysql.tar.xz -C /

案例2:mysql物理备份及恢复
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# tar -cJf /backup/mysql.tar.xz *
[root@localhost mysql]# tar -xf /backup/mysql.tar.xz -C /var/lib/mysql

案例3:host A /etc (海量小文件) --------> host A /tmp
[root@localhost ~]# tar -czf - /etc |tar -xzf - -C /tmp

案例4:host A /etc (海量小文件) --------> host B /tmp
常规方法:
[root@localhost ~]# scp -r /etc 172.16.20.21:/tmp

建议方法:
==host B 监听端口==
[root@hostb ~]# systemctl stop firewalld.service
[root@hostb ~]# nc -l 8888 |tar -xzf - -C /tmp

==host A ==
[root@localhost ~]# tar -czf - /etc | nc 172.16.20.21 8888
tar: Removing leading `/' from member names


原文链接:https://www.cnblogs.com/thelovelybugfly/p/12054904.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:有些网站经常会上去看看

下一篇:软件包管理