【重要find全局查找】【rpm 】【grep过滤】【查找命令位置】

【重要find全局查找】【rpm 】【grep过滤】【查找命令位置】一、rpm介绍rpm软件包名称:软件名称版本号(主版本、次版本、修订号)操作系统-90%的规律#有依赖关系,不能自动解决依赖关系

一、rpm介绍

rpm软件包名称:
软件名称 版本号 (主版本、次版本、修订号) 操作系统 —–90%的规律
#有依赖关系,不能自动解决依赖关系。
举例:openssh-6.6.1p1-31.el7.x86_64.rpm
数字前面的是名称
数字是版本号:第一位主版本号,第二位次版本号,带横杠的是修订号, el几—操作系统的版本。
noarch : 32位64位都支持
x86_64 : 64位
i4-686的包 :32位
devel:表示这个RPM包是软件的开发包;

#用rpm安装需要考虑如下信息:
1.需要考虑系统的版本需要与rpm对应
2.系统的架构:如32位还是64位
3.需要考虑依赖关系
案例:
不同的操作系统,需要安装软件的版本,以及类型,肯定不相同;
Windows:httpd.exe
Linux:httpd.rpm

下载httpd.rpm包,下载到虚拟机上,rpm -ivh httpd.rpm 进行安装;
考虑httpd.rpm是否依赖于其他rpm包;
如果有依赖其他rpm包,rpm -ivh httpd.rpm单独安装,安装失败;
httpd.rpm依赖于httpd-devel.rpm
httpd-devel.rpm依赖于httpd-openssl.rpm

rpm -ivh httpd-openssl.rpm
rpm -ivh httpd-devel.rpm
rpm -ivh httpd.rpm

rpm安装方式,只能用来安装没有依赖关系的rpm包;

yum -y install httpd.rpm

rpm安装

语法 # rpm -ivh 软件包名称
-i install
-vh verbose human
-U upgrade 升级

查找rpm包的网站:http://rpmfind.net/ http://pkgs.org
1.通过rpm安装
可以先下载下来
[root@linux-server ~]# wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-2017.3.23-11.el7.x86_64.rpm

wget下载命令

wget -O 指定存放路径

[root@linux-server ~]# rpm -ivh ntfs-3g-2017.3.23-11.el7.x86_64.rpm #本地安装rpm包

2.直接通过链接安装rpm包
[root@linux-server ~]# rpm -ivh http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/n/ntfs-3g-2017.3.23-11.el7.x86_64.rpm

各种查询

==查询
(从本地的rpm数据库)
-q query
-l list
-f file
-a all
rpm -qa | grep 软件名 # 查找软件是否安装
rpm -ql httpd #查询http安装的文件
rpm -qf /usr/share/httpd/noindex #查询该文件属于哪个软件包
rpm -qf /etc/passwd #查询某一个文件是哪个软件产生的:只能查询已经安装好的软件

卸载

语法:# rpm -e 软件名称
-e erase
[root@linux-server ~]# rpm -e httpd

rpm工具管理软件包总结:

  1. 很难解决包依赖关系
  2. 如果某个文件没有,很难知道它由哪个rpm包提供

grep: 文件内容过滤

[root@youngfit.com ~]# grep ‘root’ /etc/passwd #从/etc/passwd文件中过滤root字段
root❌0:0:root:/root:/bin/bash
operator❌11:0:operator:/root:/sbin/nologin

在这里插入图片描述

查找命令

[root@youngfit.com ~]# which ls
alias ls=‘ls –color=auto’
/usr/bin/ls
[root@youngfit.com ~]# which cd
/usr/bin/cd
[root@youngfit.com ~]# which rm
alias rm=‘rm -i’
/usr/bin/rm

注释:which只能查找命令文件,对普通文件没有作用;
在这里插入图片描述

查询命令和配置文件的位置

[root@youngfit.com ~]# whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz
[root@youngfit.com ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
在这里插入图片描述

一、find详解: 文件查找,针对文件名

语法:
#find 路径 条件 跟条件相关的操作符 [-exec 动作]
路径:
1.默认不写路径时查找的是当前路径.
2.加路径。
条件:
1.指定的名称 -name
2.文件类型 -type
3.权限 -perm
4.时间 -size

1.1.按文件名

从根目录开始找文件
[root@youngfit.com ~]# find / -name “file2” #从根开始找文件
/root/file2
/var/tmp/file2
[root@youngfit.com ~]# find /etc -name “ifcfg-ens33” #以名字的方式查找
[root@youngfit.com ~]# find /etc -iname “Ifcfg-ens33” #-i忽略大小写

熟用通配符

[root@youngfit.com ~]# find /etc -iname “*.txt”
参数解释:
*:表示所有字符

1.2.按文件大小 -size## 标题

[root@youngfit.com ~]# find /etc -size +5M #大于5M
[root@youngfit.com ~]# find /etc -size 5M #等于5M
[root@youngfit.com ~]# find /etc -size -5M #小于5M
[root@youngfit.com ~]# find / -size +3M -a -size -5M #查找/下面大于3M而且小于5M的文件
-a:add
[root@youngfit.com ~]# find / -size -1M -o -size +80M #查找/下面小于1M或者大于80M的文件
-o:or
[root@youngfit.com ~]# find / -size -3M -a -name “*.txt” #查找/ 下面小于3M而且名字是.txt的文件

1.3按时间查找

按时间找(atime,mtime,ctime)
-atime = access访问时间
-mtime = modify改变时间 内容修改时间会改变
-ctime = change修改时间 属性修改时间会改变

-amin #分钟
-mmin
-cmin
案例1
[root@youngfit.com ~]# find /opt -mtime +5 #修改时间5天之前
[root@youngfit.com ~]# find /opt -atime +1 #访问时间1天之前
[root@youngfit.com ~]# find . -mtime -2 #修改时间2天之内

[root@youngfit.com ~]# find . -amin +1 #访问时间在1分钟之前
[root@youngfit.com ~]# find /opt -amin -4 #访问时间在4分钟之内
[root@youngfit.com ~]# find /opt -mmin -2 #修改时间在2分钟之内

1.4按文件类型

[root@youngfit.com ~]# find /dev -type f #f普通文件
[root@youngfit.com ~]# find / -type f -size -1M -o -name “*.txt”

[root@youngfit.com ~]# find /dev -type d #d目录
[root@youngfit.com ~]# find /etc/ -type d -name “*.conf.d”

[root@youngfit.com ~]# find /etc -type l #l链接

[root@youngfit.com ~]# find /dev -type b #b块设备
[root@youngfit.com ~]# find /dev/ -type b -name “sd*”

1.5按文件权限

[root@youngfit.com ~]# find . -perm 644 #.是当前目录 精确查找644
[root@youngfit.com ~]# find /usr/bin -perm -4000 #包含set uid
[root@youngfit.com ~]# find /usr/bin -perm -2000 #包含set gid
[root@youngfit.com ~]# find /usr/bin -perm -1000 #包含sticky

1.6找到后处理的动作 ACTIONS

-name “ifcfg*” | xargs
-name “ifcfg*” -print #打印

[root@youngfit.com ~]# find /etc -name “ifcfg*” -exec cp -rf {} /tmp ; #exec命令对之前查找出来的文件做进一步操作—– 查找带ifcfg开头的文件复制到tmp下
[root@youngfit.com ~]# touch /home/test{1…20}.txt
[root@youngfit.com ~]# find /home/ -name test* -exec rm -rf {} ; #{}为前面查找到的内容,; 格式

find使用xargs

[root@youngfit.com ~]# touch /home/test{1…20}.txt
[root@youngfit.com ~]# find /home/ -name “test*” | xargs -i cp {} /tmp/ #找到之后删除处理xargs 参数传递

-exec和xargs的区别

-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。

1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好;
2、exec 格式麻烦,必须用 {} 做文件的代位符,必须用 \来转义; 作为命令的结束符,书写不便。
3、xargs不能操作文件名有空格的文件;

综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,
那么使用 xargs比较方便; 否则,就要用 exec了。

[root@youngfit ~]# touch {1…10000}.txt
[root@youngfit ~]# time find ./ -type f -name ‘.txt’ |xargs -i rm -rvf {}
real 0m0.203s
user 0m0.016s
sys 0m0.186s
[root@youngfit ~]# touch {1…10000}.txt
[root@youngfit ~]# time find ./ -type f -name ‘
.txt’ -exec rm -rvf {} ;
real 0m8.074s
user 0m3.717s
sys 0m4.294s

一、xargs的使用
(1)将前一个命令的标准输出传递给下一个命令,作为它的参数,xargs的默认命令是echo,空格是默认定界符
(2)将多行输入转换为单行

二、exec的使用
exec参数是一个一个传递的,传递一个参数执行一次命令。

总结:xargs一次将参数传给命令,可以使用-n控制参数个数;exec参数是一个一个传递的,传递一个参数执行一次命令。

[root@youngfit tmp]# find ./ -type f -name ‘file*’ |xargs -n 10 -i rm -rvf {}

**案例1: 分别找出test5 和除了test5的文件 **

[root@youngfit.com ~]# find /home/ -name test5
[root@youngfit.com ~]# find /home/ ! -name “test5*” # !–取反

今天的文章
【重要find全局查找】【rpm 】【grep过滤】【查找命令位置】分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81003.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注