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

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

大家好,欢迎来到IT知识分享网。

一、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包

各种查询

==查询
(从本地的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 /etc -type l #l链接

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

[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

-exec和xargs的区别

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

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

[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)将多行输入转换为单行

总结: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*” # !–取反

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/116040.html

(0)
上一篇 2024-11-18 20:45
下一篇 2024-11-18 21:00

相关推荐

发表回复

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

关注微信