which 只能查询命令
[root@localhost ~]#which rpm
whereis 可以查询命令和配置文件的位置
[root@localhost ~]#whereis rpm
[root@localhost ~]#whereis passwd
whatis
[root@localhost ~]#whatis rpm 和下面命令一样的效果
[root@localhost ~]#man -f rpm
find
find [options] [path...] [expression] [action]
find 路径 条件 动作
===expression===
按文件名:
[root@localhost ~]# find /etc -name "ifcfg-eth0"
[root@localhost ~]# find /etc -iname "ifcfg-eth0" //-i忽略大小写
[root@localhost ~]# find /etc -iname "ifcfg-eth*"
按文件大小:
[root@localhost ~]# find /etc -size +5M //大于5M
[root@localhost ~]# find /etc -size 5M
[root@localhost ~]# find /etc -size -5M
[root@localhost ~]# find /etc -size +5M -ls //-ls找到的处理动作:查询详细信息
按时间找(atime访问时间,mtime修改时间,ctime更改时间):
[root@localhost ~]# find /etc -mtime +5 //修改时间超过5天
[root@localhost ~]# find /etc -mtime 5 //修改时间等于5天
[root@localhost ~]# find /etc -mtime -5 //修改时间5天以内
按文件属主、属组找:
[root@localhost ~]# find /home -user jack //属主是jack的文件
[root@localhost ~]# find /home -group hr //属组是hr组的文件
[root@localhost ~]# find /home -user jack -group hr
[root@localhost ~]# find /home -user jack -a -group hr #-a 是而且的意思
[root@localhost ~]# find /home -user jack -o -group hr #-o 是或者的意思
-not 是相反的意思
按文件类型:
[root@localhost ~]# find /dev -type f //f普通
[root@localhost ~]# find /dev -type d //d目录
[root@localhost ~]# find /dev -type l //l链接
[root@localhost ~]# find /dev -type b //b块设备
[root@localhost ~]# find /dev -type c //c字符设备
[root@localhost ~]# find /dev -type s //s套接字
[root@localhost ~]# find /dev -type p //p管道文件
按文件权限:
[root@localhost ~]# find . -perm 644 -ls
[root@localhost ~]# find . -perm -644 -ls #等于或者大于644权限的文件
[root@localhost ~]# find . -perm -600 -ls
[root@localhost ~]# find . -perm -222 -ls
按正则表达式:
-regex pattern
[root@localhost ~]# find /etc -regex '.*ifcfg-eth[0-9]'
.* 任意多个字符
[0-9] 任意一个数字
+ 前面字符一次或者多次
\ 转义符 注:转义是 告诉shell不必特殊解释这个字符
[root@localhost ~]# find /etc -regex '.*ifcfg-enp0s25'
/etc/sysconfig/network-scripts/ifcfg-enp0s25
找到后处理的动作 ACTIONS: (默认动作-print)
-print: 显示
-ls:类似ls -l的形式显示每一个文件的详细
-delete: 删除匹配到的行
-ok COMMAND {} \; 每一次操作都需要用户确认,{}表示引用找到的文件,是占位符
-exec COMMAND {} \; 每次操作无需确认
[root@localhost ~]# find /etc -name "ifcfg*"
[root@localhost ~]# find /etc -name "ifcfg*" -print
[root@localhost ~]# find /etc -name "ifcfg*" -ls
[root@localhost ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;
[root@localhost ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;
find /etc -name “ifcfg*” -ok mv {} /tmp \;
[root@localhost ~]# find /etc -name "ifcfg*" -exec rm -rf {} \;
[root@localhost ~]# find /etc -name "ifcfg*" -delete
当多个条件匹配时,如果使用-o 那个动作会去匹配最后一个条件
当多个条件匹配时,如果使用-o 每个条件前都加动作等同于使用(),每个条件都会执行动作
当多个条件匹配时,如果使用-a 只有条件都满足才会执行动作
无论使用-o 还是-a 只要有多个条件都()
案例:
[root@localhost ~]# mkdir dir1
[root@localhost ~]# touch dir1/file{1..20}
[root@localhost ~]# find /root/dir1 -name "file5"
[root@localhost ~]# find /root/dir1 ! -name "file5"
[root@localhost ~]# find /root/dir1 -name "file5" -o -name "file9"
/root/dir1/file5
/root/dir1/file9
[root@localhost ~]# 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@localhost ~]# 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@localhost ~]# find /root/dir1 -name "file5" -ls -a -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" \) -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’
扩展知识:find结合xargs
[root@localhost ~]# find . -name "localhost*.txt" |xargs rm -rf
[root@localhost ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp
[root@localhost ~]# find . -type f -name "*.txt" |xargs -i cp {} /tmp/
加 -I 参数 需要事先指定替换字符
加-i 参数直接用 {}就能代替管道之前的标准输出的内容
小知识:更改主机名(永久修改) : hostnamectl set-hostname lcr
打包压缩:
tar czf +打包去哪+打包名字 + 打包的内容
c:建立新的文档
f:指定存档或设备
z:调用gzip的方式打包
tar czf /mnt/file.tar.gz ./*
/mnt/file1.tar.gz 这个位置可以指定打包后的路径(把打包的文件放到哪里).tar.gz 这个文件是文件的后缀
解压:
tar xvf tar xf
v:显示解压的过程
x:解压的参数
-C 指定解压路径
tar xf etc.tar.gz
tar xf /opt/Python-3.5.2.tar.xz -C /usr/local/
拓展->数据备份:
[root@localhost ~]# yum -y install mariadb-server
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mkdir /backup
文件存放在: /var/lib/mysql
案例1:mysql物理备份及恢复
[root@localhost ~]# tar -cJf /backup/mysql.tar.xz /var/lib/mysql
[root@localhost ~]# rm -rf /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
案例4:host A /etc (海量小文件) --------> host B /tmp
常规方法:
[root@localhost ~]# scp -r /etc 172.16.20.21:/tmp
//此方法为远程备份