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