首页 > 其他分享 >24.11.17 软件安装和find

24.11.17 软件安装和find

时间:2024-12-28 17:21:52浏览次数:6  
标签:oldboyedu 17 -- 24.11 wget txt root find

yum方式安装

前提:必须保证可以联网
特点:类似于手机软件商店直接安装软件
	类似于Windows的360软件管家 搜索软件--->点击安装自动帮我们安装好
	安装位置是默认的,我们不能定义位置
	自动解决依赖问题  依赖:某个软件依赖于另一个软件
	类似于吃饭点外卖  打包好和饭已经做好
	
/etc/yum.repos.d/  # 存放软件仓库的配置 repository 仓库

yum语法结构:install  # 安装
		  remove  # 卸载

# 如果是centos需要将默认的仓库地址更改为国内的仓库地址,麒麟系统不需要修改
1、备份默认的仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的新的仓库到配置目录下
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

eg:安装lrzsz命令
[root@oldboyedu ~]# yum -y install lrzsz

lrzsz中包含两个命令
rz:将Windows的文件上传到Linux
sz:将Linux的文件下载到Windows

eg:卸载lrzsz命令
[root@oldboyedu ~]# yum -y remove lrzsz

eg:安装ifconfig命令 ifconfig在net-tools网络工具包中
# linux的一些命令可能在其他的包名称中
运维原则:高效 简单 易用
# 我们如何知道安装的命令属于那个包
1、百度一下你就知道  # 建议使用的
2、yum search 命令  # 搜素命令属于那个包,有一些bag
3、yum provides 命令  # 查看命令属于那个包,也存在一些bag

eg:安装sl命令
1、默认的仓库中没有sl命令,需要安装扩展的epel仓库
[root@oldboyedu ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2、安装sl命令  # sl跑小火车命令
[root@oldboyedu ~]# yum -y install sl

3、安装cowsay命令
[root@oldboyedu ~]# yum -y install cowsay

[root@oldboyedu ~]# cowsay "呵呵哒"   # 小牛说话
 _____
< 呵呵哒 >
 -----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

[root@oldboyedu ~]# animalsay  "aaa"
  # 麒麟自带的动物世界说话
  
eg:卸载正确的软件包名称
[root@oldboyedu ~]# yum -y remove ifconfig  # 无法卸载 必须找到源包
[root@oldboyedu ~]# yum -y remove net-tools # 正确的卸载方式

eg:查看软件仓库中可用的软件包
[root@oldboyedu ~]# yum list

eg:[root@oldboyedu ~]# yum update  # 更新仓库,有需要时再使用,因为耗时较长

eg:[root@oldboyedu ~]# yum -y reinstall  # 重新安装,类似于Windows的覆盖安装,遇到命令无法正常使用又无法卸载的情况,使用该命令

eg:[root@oldboyedu ~]# yum celan all  # 清理仓库缓存  无法正常下载软件的时候尝试清理缓存

rpm软件安装

特点:1、必须先下载.rpm包
	2、不需要联网
	3、不能自动解决依赖问题,需要手动解决
	4、类似于点外卖,吃水饺自己做,生饺子--->需要依赖锅--->水,吃--->碗--->筷子--->小料(醋,酱油,辣椒)
	
语法结构:rpm -ivh xx.rpm  # 使用rpm安装rpm包,类似于Windows下载.exe的安装文件 手动安装 文件必须是.rpm结尾的
	    -i  # install 安装
	    -v  # verbose 显示过程
	    -h  #显示进度
	    rpm -e xx.rpm  # 卸载软件
	    -qa  # 查看系统已安装了那些软件 rpm -qa
	    -qa wget  # 查看wget是否安装
	    
eg:一台没有网络的服务器安装wget
第一步:通过有网络的服务器下载wget命令包和依赖
#--downloadonly  只下载不安装
#--downloaddir=目录  将下载的包存放到指定的目录下
[root@oldboyedu ~]# yum -y install --downloadonly --downloaddir=./ wget

第二步:将包上传到没有网络的服务器上
[root@oldboyedu ~]# ll
总用量 672
-rw-r--r-- 1 root root  27188 11月 17 10:23 libmetalink-0.1.3-8.ky10.x86_64.rpm
-rw-r--r-- 1 root root 658908 11月 17 10:23 wget-1.20.3-5.ky10.x86_64.rpm

第三步:安装wget包提示要依赖先安装依赖
[root@oldboyedu ~]# rpm -ivh libmetalink-0.1.3-8.ky10.x86_64.rpm
[root@oldboyedu ~]# rpm -ivh wget-1.20.3-5.ky10.x86_64.rpm 
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:wget-1.20.3-5.ky10               ################################# [100%]
   
第四步:测试命令是否成功
[root@oldboyedu ~]# wget
wget:未指定 URL
用法: wget [选项]... [URL]...

请尝试使用“wget --help”查看更多的选项。

eg:卸载wget命令
[root@oldboyedu ~]# rpm -e wget
或者使用yum卸载
[root@oldboyedu ~]# yum -y remove wget
#不管是yum还是rpm安装的都可以使用yum或者rpm卸载

eg:查看软件是否安装 -qa
[root@oldboyedu ~]# rpm -qa wget
wget-1.20.3-3.ky10.x86_64

[root@oldboyedu ~]# rpm -qa wget lrzsz
lrzsz-0.12.20-46.ky10.x86_64
wget-1.20.3-3.ky10.x86_64

eg:查看软件安装了那些文件
[root@oldboyedu ~]# rpm -ql wget
/etc/wgetrc
/usr/bin/wget
/usr/share/doc/wget
/usr/share/doc/wget/AUTHORS
/usr/share/doc/wget/COPYING
/usr/share/locale/be/LC_MESSAGES/wget.mo
/usr/share/locale/bg/LC_MESSAGES/wget.mo
/usr/share/locale/ca/LC_MESSAGES/wget.mo
/usr/share/locale/cs/LC_MESSAGES/wget.mo
/usr/share/locale/da/LC_MESSAGES/wget.mo
/usr/share/locale/de/LC_MESSAGES/wget.mo
/usr/share/locale/el/LC_MESSAGES/wget.mo
/usr/share/locale/en_GB/LC_MESSAGES/wget.mo
/usr/share/locale/eo/LC_MESSAGES/wget.mo
/usr/share/locale/es/LC_MESSAGES/wget.mo
/usr/share/locale/et/LC_MESSAGES/wget.mo
/usr/share/locale/eu/LC_MESSAGES/wget.mo
/usr/share/locale/fi/LC_MESSAGES/wget.mo
/usr/share/locale/fr/LC_MESSAGES/wget.mo
/usr/share/locale/ga/LC_MESSAGES/wget.mo
/usr/share/locale/gl/LC_MESSAGES/wget.mo
/usr/share/locale/he/LC_MESSAGES/wget.mo
/usr/share/locale/hr/LC_MESSAGES/wget.mo
/usr/share/locale/hu/LC_MESSAGES/wget.mo
/usr/share/locale/id/LC_MESSAGES/wget.mo
/usr/share/locale/it/LC_MESSAGES/wget.mo
/usr/share/locale/ja/LC_MESSAGES/wget.mo
/usr/share/locale/lt/LC_MESSAGES/wget.mo
/usr/share/locale/nb/LC_MESSAGES/wget.mo
/usr/share/locale/nl/LC_MESSAGES/wget.mo
/usr/share/locale/pl/LC_MESSAGES/wget.mo
/usr/share/locale/pt/LC_MESSAGES/wget.mo
/usr/share/locale/pt_BR/LC_MESSAGES/wget.mo
/usr/share/locale/ro/LC_MESSAGES/wget.mo
/usr/share/locale/ru/LC_MESSAGES/wget.mo
/usr/share/locale/sk/LC_MESSAGES/wget.mo
/usr/share/locale/sl/LC_MESSAGES/wget.mo
/usr/share/locale/sr/LC_MESSAGES/wget.mo
/usr/share/locale/sv/LC_MESSAGES/wget.mo
/usr/share/locale/tr/LC_MESSAGES/wget.mo
/usr/share/locale/uk/LC_MESSAGES/wget.mo
/usr/share/locale/vi/LC_MESSAGES/wget.mo
/usr/share/locale/zh_CN/LC_MESSAGES/wget.mo
/usr/share/locale/zh_TW/LC_MESSAGES/wget.mo

eg:查看软件的配置文件位置
[root@oldboyedu ~]# rpm -qc wget
/etc/wgetrc

eg:查看软件是否安装的时候 忘记了软件叫什么名字,模糊的记得一点
[root@oldboyedu ~]# rpm -qa | grep net-
net-tools-help-2.0-0.54.ky10.noarch
perl-libnet-3.11-420.ky10.noarch
libnet-1.2-1.ky10.x86_64
perl-libnet-help-3.11-420.ky10.noarch
net-tools-2.0-0.54.ky10.x86_64
net-snmp-libs-5.9-4.p01.ky10.x86_64
#结合过滤查找,用好过滤

[root@oldboyedu ~]# rpm -qa|egrep "net-to|lrz"
net-tools-help-2.0-0.54.ky10.noarch
lrzsz-0.12.20-46.ky10.x86_64
net-tools-2.0-0.54.ky10.x86_64

Ubuntu系统安装软件

第一步:将默认的仓库修改为国内阿里云地址
root@oldboy:~# mv /etc/apt/sources.list /opt/
root@oldboy:~# vim /etc/apt/sources.list  #粘贴一下内容

deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe mult
iverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe
multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted univ
erse multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted
universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted unive
rse multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted u
niverse multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted un
iverse multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricte
d universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted uni
verse multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricte
d universe multiverse 

第二步:执行更新操作
root@oldboy:~# apt update

命令语法:apt -y install wget
	    dpkg -i xx.deb  # ubt安装类似于centos的rpm包
	    dpkg -l wget  # 查看wget是否安装
	    apt -y remove 软件  # 卸载
	    
eg:安装wget命令
apt -y install wget

eg:卸载wget命令
root@oldboy:~# apt -y remove wget

eg:查看wget命令是否安装
dpkg -l sl  wget   # 查看sl和wget是否安装

eg:本地安装.deb的包 类似kylin和centos的.rpm包
root@oldboy:~# apt-get -y install --download-only net-tools
root@oldboy:~# ll /var/cache/apt/archives/
root@oldboy:~# ll /var/cache/apt/archives/
total 212
-rw-r--r-- 1 root root 196392 Feb  1  2019 net-tools_1.60+git20180626.aebd88e-1ubuntu1_amd64.deb

安装deb的包
root@oldboy:~# dpkg -i /var/cache/apt/archives/net-tools_1.60+git20180626.aebd88e-1ubuntu1_amd64.deb

find文件查找类型

作用:根据不同的文件类型查找出想要的文件
语法结构:find 在哪里找 找什么类型的  # 格式1
	   find /data f
	   find /data 按照名称查找  # 格式2
	   
文件类型:
f  # 表示普通文件
d  # 表示目录
l  #表示链接文件
c  # 表示字节设备
b  # 表示块设备 /dev/sda 磁盘 光驱

字节设备

urandom  # 作用 不停的往外吐 没啥用
[root@oldboyedu ~]# ll /dev/urandom 
crw-rw-rw- 1 root root 1, 9 11月 12 10:11 /dev/urandom
/dev/null  # 作用 可以将命令的结果定向到此文件 空 类似黑洞 只吃不拉
[root@oldboyedu ~]# echo hehe > /dev/null 
[root@oldboyedu ~]# cat /dev/null 
[root@oldboyedu ~]# echo hehe >> /dev/null 
[root@oldboyedu ~]# cat /dev/null
作用:写脚本执行命令的时候,会根据自己想要的输出内容来定义输出格式
[root@oldboyedu ~]# ping -c1 -w1 www.sina.com &>/dev/null
[root@oldboyedu ~]# echo $?
0
[root@oldboyedu ~]# ping -c1 -w1 www.sinssssssssssa.com &>/dev/null 
[root@oldboyedu ~]# echo $?
2
# echo $? 返回结果是0,表示成功  返回结果非0,表示失败
# ping -c1 -w1 中的 -cn 表示ping n次 -wn 表示给n秒的时间

扩展理解
[root@oldboyedu ~]# cat for.sh 
ping -c1 -w1 $1 &>/dev/null
if [ $? -eq 0 ];then
	echo "$1 在线..."
else
	echo "$1 不在线..."
fi

$? 返回上一条命令的执行结果,0为成功,非0为失败

常用字节文件
/dev/zero
[root@oldboyedu ~]# dd if=/dev/zero of=./1.txt bs=1M count=1000
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB,1000 MiB)已复制,3.02216 s,347 MB/s
[root@oldboyedu ~]# ll -h 1.txt 
-r--r--r-- 1 root root 1000M 11月 17 19:20 1.txt

dd  # 命令
if  # input file 输入文件 /dev/zero输入内容
of  # ouput file 输出到那个文件 1.txt 中
bs  # 每次读取的大小 bs=1M 每次在/dev/zero中读取1M的数据
count  # 总共读多少次

#通过dd生成一个10M的文件
[root@oldboyedu ~]# dd if=/dev/zero of=./2.txt bs=1M count=10
记录了10+0 的读入
记录了10+0 的写出
10485760字节(10 MB,10 MiB)已复制,0.0115553 s,907 MB/s
#读取文件,写入到test.log 100k
[root@oldboyedu ~]# dd if=/etc/services of=test.log bs=1k count=100
记录了100+0 的读入
记录了100+0 的写出
102400字节(102 kB,100 KiB)已复制,0.0111184 s,9.2 MB/s

find文件查找

作用:查找文件
	1、查找大文件
	2、查找小文件多的
	  inode号,一个文件至少占用一个inode号和一个block
	  相当于一本书的索引,一本书的目录是有限制的 比如200个
	3、模糊查找
	4、按照时间查找
	
查看系统中多有的inode使用情况
[root@oldboyedu ~]# df -i
文件系统                Inodes 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                117317     468   116849       1% /dev
tmpfs                   121363       1   121362       1% /dev/shm
tmpfs                   121363     701   120662       1% /run
tmpfs                   121363      17   121346       1% /sys/fs/cgroup
/dev/mapper/klas-root 24584192  130694 24453498       1% /
tmpfs                   121363      14   121349       1% /tmp
/dev/sda1               524288     339   523949       1% /boot
tmpfs                   121363       6   121357       1% /run/user/0

语法结构:find ./ -type f  # 按照文件类型查找
	    find ./ -type f -o -type d  # 使用或者关系查找
	    -o  # or 或者
	    -a  # and 并且 默认就是并且关系 可省略

find按照文件类型查找出所有的普通文件

查找普通文件或者目录是常用操作
环境准备:
[root@oldboyedu 3]# ll
总用量 644
-rw-r--r-- 1 root root      0 11月 17 19:56 1.txt
-rw-r--r-- 1 root root      0 11月 17 19:57 1.TXT
-rw-r--r-- 1 root root      0 11月 17 19:56 2.txt
-rw-r--r-- 1 root root      0 11月 17 19:57 2.TXT
-rw-r--r-- 1 root root      0 11月 17 19:56 3.txt
-rw-r--r-- 1 root root      0 11月 17 19:57 3.TXT
drwxr-xr-x 2 root root      6 11月 17 19:59 test-1
drwxr-xr-x 2 root root      6 11月 17 19:59 test-2
-rw-r--r-- 1 root root 658908 11月 17 18:32 wget-1.20.3-5.ky10.x86_64.rpm

[root@oldboyedu 3]# touch test-{1..2}/{1..3}.log
[root@oldboyedu 3]# ll test*/
test-1/:
总用量 0
-rw-r--r-- 1 root root 0 11月 17 20:00 1.log
-rw-r--r-- 1 root root 0 11月 17 20:00 2.log
-rw-r--r-- 1 root root 0 11月 17 20:00 3.log

test-2/:
总用量 0
-rw-r--r-- 1 root root 0 11月 17 20:00 1.log
-rw-r--r-- 1 root root 0 11月 17 20:00 2.log
-rw-r--r-- 1 root root 0 11月 17 20:00 3.log

#查找出当前目录所有普通文件 默认递归查找
[root@oldboyedu 3]# find ./ -type f
./wget-1.20.3-5.ky10.x86_64.rpm
./1.txt
./2.txt
./3.txt
./1.TXT
./2.TXT
./3.TXT
./test-1/1.log
./test-1/2.log
./test-1/3.log
./test-2/1.log
./test-2/2.log
./test-2/3.log

eg:查找出所有的目录文件
[root@oldboyedu 3]# find ./ -type d
./
./test-1
./test-2

其他类型查找
[root@oldboyedu 3]# find ./ -type l
[root@oldboyedu 3]# find ./ -type b
[root@oldboyedu 3]# find ./ -type c

eg:查找出文件或者是目录的
[root@oldboyedu 3]# find ./ -type f -o -type d
./
./wget-1.20.3-5.ky10.x86_64.rpm
./1.txt
./2.txt
./3.txt
./1.TXT
./2.TXT
./3.TXT
./test-1
./test-1/1.log
./test-1/2.log
./test-1/3.log
./test-2
./test-2/1.log
./test-2/2.log
./test-2/3.log

find按照名称查找文件

eg:查找出文件名称1.txt的
[root@oldboyedu 3]# find ./ -name "1.txt"
./1.txt
[root@oldboyedu 3]# find ./ -name "1.TXT"
./1.TXT

eg:不区分大小写使用 -iname
[root@oldboyedu 3]# find ./ -iname "1.txt"
./1.txt
./1.TXT
[root@oldboyedu 3]# find ./ -name "[12].txt"
./1.txt
./2.txt
[root@oldboyedu 3]# touch 12.txt
[root@oldboyedu 3]# find ./ -name "[12].txt"
./1.txt
./2.txt
[root@oldboyedu 3]# find ./ -name "[12][2].txt"
./12.txt

[root@oldboyedu 3]# find ./ -name "[0-9a-z].txt"
./1.txt
./2.txt
./3.txt
./a.txt
*表示通配符
[root@oldboyedu 3]# find ./ -name "*.txt"
./1.txt
./2.txt
./3.txt
./12.txt
./a.txt

[root@oldboyedu 3]# find ./ -name "1.txt" -o -name "2.txt"
./1.txt
./2.txt

不区分大小写
[root@oldboyedu 3]# find ./ -iname "*.txt"
./1.txt
./2.txt
./3.txt
./1.TXT
./2.TXT
./3.TXT
./12.txt
./a.txt

eg:查出目录叫test-1
[root@oldboyedu 3]# find ./ -name "test-1"
./test-1

find使用并且和或者查找文件

eg:查找出普通文件并且名称为1.txt的
[root@oldboyedu 3]# find ./ -type f -a -name "1.txt"
./1.txt

eg:查找出目录并且名称是test-1
[root@oldboyedu 3]# find ./ -type d -a -name "test-1"
./test-1

eg:查找出文件名称*.txt或者*.log
[root@oldboyedu 3]# find ./ -name "*.txt" -o -name "*.log"
./1.txt
./2.txt
./3.txt
./test-1/1.log
./test-1/2.log
./test-1/3.log
./test-2/1.log
./test-2/2.log
./test-2/3.log
./12.txt
./a.txt

eg:按照深度等级查找
[root@oldboyedu 3]# find ./ -maxdepth 1 -name "*.txt" -o -name "*.log"
./1.txt
./2.txt
./3.txt
./12.txt
./a.txt
# -maxdepth n  表示按照第n级查找

find按照inode号码查找(了解)

[root@oldboyedu 2]# ll -i
总用量 0
69158967 -rw-r--r-- 1 root root 0 11月  1 21:05 test1.txt
69158968 -rw-r--r-- 1 root root 0 11月  1 21:05 test2.txt
69158969 -rw-r--r-- 1 root root 0 11月  1 21:05 test3.txt
[root@oldboyedu 2]# find ./ -inum 69158968
./test2.txt

#查找出来后删除
[root@oldboyedu 2]# find ./ -inum 69158968 | xargs rm
[root@oldboyedu 2]#  ls
test1.txt  test3.txt

find按照文件大小查找文件

语法格式:find ./ -size 10M  # 查找出等于10M的文件
	   find ./ -size +10M  # 查找出大于10M的文件
	   find ./ -size -10M  #  查找出小于10M的文件
	   
eg:查找出大于10M的文件
[root@oldboyedu ~]# find ./ -size +10M
./secure-20161219
./secure.big
./access.log
./1.txt

eg:查找出等于10M的文件
[root@oldboyedu ~]# find ./ -size 10M
./etc/udev/hwdb.bin
./2.txt

eg:查找出小于10M的文件
[root@oldboyedu ~]# find 1/ -size -10M
1/
1/fileA.txt
1/fileB.txt
1/fileC.txt
1/fileD.txt

eg:查找出等于10M或大于10M的文件
[root@oldboyedu ~]# find ./ -size 10M -o -size +10M
./secure-20161219
./secure.big
./access.log
./etc/udev/hwdb.bin
./2.txt
./1.txt

#查找出普通文件并且大于10M的文件
[root@oldboyedu ~]# find ./ -type f -size +10M
./secure-20161219
./secure.big
./access.log
./1.txt

eg:查找出文件大于5M并且小于15M的文件
[root@oldboyedu ~]# find ./ -size +5M -size -15M
./etc/selinux/targeted/policy/policy.32
./etc/udev/hwdb.bin
./2.txt

#默认就是并且关系可以省略-a 但是-o不能省略
[root@oldboyedu ~]# find ./ -size +5M -a -size -15M
./etc/selinux/targeted/policy/policy.32
./etc/udev/hwdb.bin
./2.txt
[root@oldboyedu ~]# find ./ -size +5M -size -15M
./etc/selinux/targeted/policy/policy.32
./etc/udev/hwdb.bin
./2.txt

eg:查找出大于1M的目录 如果目录大一1M 说明下面已经存了5万+的小文件
[root@oldboyedu ~]# find ./ -type -d -size +1M
find: Unknown argument to -type: -

统计目录及一下所有文件的总共大小
[root@oldboyedu ~]# du -sh 3
644K	3

find按照时间查找

三种时间:atime 访问时间
	    mtime 文件修改时间
	    ctime 文件属性修改时间
语法格式:find ./ -mtime +7  #7天前修改过的文件
	    find ./ -mtime -7  #7天内修改过的文件
	    find ./ -mtime 0  #24小时内被修改过得文件
	    
eg:查找24小时内被修改过得文件
[root@oldboyedu ~]# find ./ -mtime 0
./
./.bash_history
./2
./2.txt
./1.txt
./.viminfo
./test.log
./3

先下载ntpdate
[root@oldboyedu ~]# yum -y install ntpdate
然后修改时间
[root@oldboyedu ~]# date -s 20081010
2008年 10月 10日 星期五 00:00:00 CST
创建出几个文件
[root@oldboyedu ~]# touch 3/2008{1..3}.log
[root@oldboyedu ~]# mkdir 3/2008{1..3}

然后同步系统时间
[root@oldboyedu ~]# ntpdate ntp1.aliyun.com
18 Nov 11:44:02 ntpdate[13203]: step time server 120.25.115.20 offset +508333292.449860 sec
[root@oldboyedu ~]# date
2024年 11月 18日 星期一 11:44:08 CST

eg:查找出修改时间大于30天前的文件
[root@oldboyedu ~]# find ./ -type f -mtime +30 
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./nginx-1.20.1.tar.gz
./3/20081.log
./3/20082.log
./3/20083.log

eg:查找出修改时间大于30天前的所有文件
[root@oldboyedu ~]# find ./ -mtime +30 
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./3
./3/20081.log
./3/20082.log
./3/20083.log
./3/20081
./3/20082
./3/20083

时间查找作用:
	1、大于7天或者小于30天前的文件不用了需要备份或者删除
	2、系统中毒 文件被篡改
	
笔试题:查找/data目录下所有的普通文件修改时间大于30天前然后删除
[root@oldboyedu ~]# find /data -type f -mtime +30 | xargs rm

将find的结果交给其他命令

1、find都找到的文件交给 cat rm cp mv 命令 使用xargs

find找到的文件交给 cat  rm  cp  mv命令
[root@oldboyedu 3]# echo aaa > 3.txt
[root@oldboyedu 3]# echo bbb > 4.txt

eg:找出文件名称3.txt的然后查看里面的内容
[root@oldboyedu 3]# find ./ -name "3.txt" 
./3.txt
[root@oldboyedu 3]# cat 3.txt
aaa
[root@oldboyedu 3]# find ./ -name "3.txt" | xargs cat
aaa
[root@oldboyedu 3]# find ./ -name "3.txt" | xargs ls -l
-rw-r--r-- 1 root root 4 11月 18 11:56 ./3.txt
# 为什么用ls -l,不用ll   因为xargs后面所有的别名失效

xargs:将前面的命令执行的结果 甩到所有命令的最后面
xargs可以格式化输出 按n列的方式 默认以空格分隔
| xargs -n1  # 按照1列的方式输出内容

eg:查找名称3.txt的文件然后删除
[root@oldboyedu 3]# find ./ -name "3.txt" | xargs rm

eg:查找名称4.txt的文件然后复制到/opt目录
[root@oldboyedu 3]# find ./ -name "4.txt"
./4.txt
[root@oldboyedu 3]# find ./ -name "4.txt" | xargs -i cp {} /opt/
[root@oldboyedu 3]# ll 4.txt /opt/4.txt 
-rw-r--r-- 1 root root 4 11月 18 11:56 4.txt
-rw-r--r-- 1 root root 4 11月 18 12:19 /opt/4.txt

eg:查找名称4.txt 然后移动到/tmp目录
[root@oldboyedu 3]# find ./ -name "4.txt" | xargs -i mv {} /tmp/

2、find找到的文件交给 cat rm cp mv命令 使用-exec

find找到的文件交给 cat  rm  cp  mv命令
[root@oldboyedu 3]# echo aaa > 3.txt
[root@oldboyedu 3]# echo bbb > 4.txt

eg:交给cat命令
[root@oldboyedu 3]# find ./ -name "4.txt" -exec cat {} \;
bbb
[root@oldboyedu 3]# find ./ -name "4.txt" -exec ls -l {} \;
-rw-r--r-- 1 root root 4 11月 18 12:24 ./4.txt
#以;结尾,所以需要加\还原;本身的意义

eg:交给cp动作
[root@oldboyedu 3]# find ./ -name "4.txt" -exec cp {} /opt \;
[root@oldboyedu 3]# ll /opt/4.txt 
-rw-r--r-- 1 root root 4 11月 18 12:28 /opt/4.txt

eg:交给rm动作
[root@oldboyedu 3]# find ./ -name "*.log" -exec rm {} \;

eg:查找出所有大写的.TXT结尾的文件 然后打包成test.tar.gz
[root@oldboyedu 3]# find ./ -name "*.TXT" -exec tar zcvf test.tar.gz {} \;
./1.TXT
./2.TXT
./3.TXT
[root@oldboyedu 3]# tar tf test.tar.gz 
./3.TXT
[root@oldboyedu 3]# find ./ -name "*.TXT" | xargs tar zcvf test.tar.gz 
./1.TXT
./2.TXT
./3.TXT
[root@oldboyedu 3]# tar tf test.tar.gz 
./1.TXT
./2.TXT
./3.TXT
#因为 -exec是一个一个的执行,存在一定缺陷,所以一般打包用xargs,不用-exec

3、find找到的文件交给 cat rm cp mv命令 使用反引号或者$()

find找到的文件交给 cat  rm  cp  mv命令
[root@oldboyedu 3]# echo aaa > 3.txt
[root@oldboyedu 3]# echo bbb > 4.txt

eg:将查找到的文件交给cat命令
[root@oldboyedu 3]# cat `find ./ -name "4.txt"`
bbb

eg:将查找到的文件交给ll命令
[root@oldboyedu 3]# ll `find ./ -name "4.txt"`
-rw-r--r-- 1 root root 4 11月 18 13:24 ./4.txt

eg:交给cp命令
[root@oldboyedu 3]# cp `find ./ -name "4.txt"` /mnt
[root@oldboyedu 3]# ll /mnt/
总用量 4
-rw-r--r-- 1 root root 4 11月 18 13:33 4.txt

eg:拷贝查找到的所有文件到/root
[root@oldboyedu 3]# cp `find ./ -iname "2.txt"` /root
cp:是否覆盖'/root/2.txt'? n
[root@oldboyedu 3]# ll /root/2.*
-rw-r--r-- 1 root root 10485760 11月 17 19:26 /root/2.txt
-rw-r--r-- 1 root root        0 11月 18 13:35 /root/2.TXT

eg:查找到的命令交给rm命令
[root@oldboyedu 3]# rm -f $(find ./ -iname "2.txt")

标签:oldboyedu,17,--,24.11,wget,txt,root,find
From: https://www.cnblogs.com/wjhit/p/18637686

相关文章

  • 24.11.18 系统优化
    修改默认的yum仓库默认仓库都是国外的,下载软件的速度慢CentOS默认仓库是随机的 可能是阿里云,清华大学,重庆大学,也可能是北电 个人也可以搭建yum仓库(软件的仓库) 第一步:找到阿里云的仓库链接https://opsx.alibaba.com/第二步:备份默认的仓库mv/etc/yum.repos.d/CentOS-Bas......
  • 24.11.19 定时任务
    定时任务1、什么是定时任务? 闹钟/每天定时7点半8点 在固定的时间做什么事情2、定时任务作用 国定时间同步时间 数据备份(备份的服务器)重要的数据备份3份公司备份服务器笔记本移动硬盘网盘一份 先打包然后再备份(代码文件上百个上千个)占用磁盘io降低传输速度iin......
  • 24.11.20 磁盘管理
    磁盘外部结构磁盘分类: 固态硬盘:内部是主板和U盘类似 机械硬盘:盘片主轴传动手臂做机械运动类似DVD Nvme硬盘PCI-E接口大小分类: 3.5英寸:台式机 2.5英寸:服务器笔记本 接口类型: IDE接口#淘汰 SCSI接口#淘汰 SATA接口#台式机笔记本 SAS接口#企业服......
  • 打卡信奥刷题(500)用C++信奥P6496[普及组/提高] [COCI2016-2017#2] Nizin
    [COCI2016-2017#2]Nizin题目描述设AAA是一个含有nnn个元素的......
  • 跟我学C++中级篇——C++17中的std::void_t
    一、std::void_tstd::void_t是从C++17提供的一个元函数,主要用来在SFINAE应用上更简单方便一些。老规矩先看一下其定义形式:template<class...>usingvoid_t=void;这段代码单纯从代码意义上理解有两个情况:一是它使用了变参模板;二是使用了别名应用。它是一种很简单的......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241417《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标<《C语言程序设计......
  • rfc2217虚拟串口
    记录烧录esp8266的配置.${IDF_PAH}\components\esptool_py\esptool\esptool.py DEFAULT_TIMEOUT=3                  #timeoutformostflashoperationsSTART_FLASH_TIMEOUT=20             #timeoutforstartingflash(mayperfo......
  • 004. [NOIP2017 提高组] 机器翻译(洛谷P1540)
    004.[NOIP2017提高组]机器翻译(洛谷P1540)题目背景NOIP2010提高组T1题目描述小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查......
  • 005. [NOIP2017 提高组] 时间复杂度(洛谷P3952)
    005.[NOIP2017提高组]时间复杂度(洛谷P3952)题目背景NOIP2017提高组D1T2题目描述小明正在学习一种新的编程语言A++,刚学会循环语句的他激动地写了好多程序并给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序,于是你的机会来啦!下面请你编写程序......
  • 《c和指针》第17章 经典抽象数据类型
    第17章经典抽象数据类型17.1内存分配在实现抽象数据类型(ADT)时,内存分配是一个关键问题。对于复杂的数据结构,如堆栈、队列和树,需要动态分配内存来存储数据元素。在C语言中,通常使用malloc、calloc和realloc函数来进行动态内存分配。malloc函数用于分配指定字节数的内......