Linux下文件查找、压缩归档、计划任务的设置及练习

1.find命令的通

主要进行文件搜索

2.基本语法

find [文件路径] [选项 选项的值]

-name *

-type f|d

常见的选项

-name 根据文件的名称搜索文件,支持通配符*

-type f代表普通文件,d代表目录

3.*通配符

在linux 系统中,如果要查找的文件的名称不清晰,可以使用部分文件名+*搜索

[root@localhost ~]# touch /opt/anyuncai.abc     在/opt目录下创建anyuncai.txt文件

[root@localhost ~]# ls /opt/      //查找/opt目录

anyuncai.abc                      apache-tomcat-9.0.91         Main.java

apache-maven-3.9.8                apache-tomcat-9.0.91.jia.gz

apache-maven-3.9.8-bin.tar(4).gz  Main.class

[root@localhost ~]# find / -name "anyuncai*"

/opt/anyuncai.abc

案例 获取/etc/中以.conf结尾的文件

[root@localhost ~]# ls -l /etc/*.conf

练习:

找到http.conf文件

[root@localhost ~]# yum -y install httpd     下载http服务

[root@localhost ~]# find / -name "httpd.conf*"     查找到的文件

/etc/httpd/conf/httpd.conf

/usr/lib/tmpfiles.d/httpd.conf

[root@localhost ~]# find /etc/ -name "httpd.conf" -type f     //将/范围换成/etc/目录范围,这样查找更快,更加节省计算自资源

/etc/httpd/conf/httpd.conf

[root@localhost ~]# find /etc/ -name "*.conf" -type f    //获取/etc/中以.conf结尾的文件

[root@localhost ~]# find /etc/ -name "http*" -type f     //搜索以http开头的文件

/etc/sysconfig/httpd

/etc/logrotate.d/httpd

/etc/httpd/conf/httpd.conf

文件的时间概念

window中的时间

1.创建时间

2.修改时间

3.访问时间

使用stat命令获取文件的时间信息

[root@localhost ~]# rm -rf /opt/*

[root@localhost ~]# touch /opt/c.txt

[root@localhost ~]# ls /opt/

c.txt

[root@localhost ~]# stat /opt/c.txt      //stat文件

  文件:"/opt/c.txt"

  大小:0          块:0          IO 块:4096   普通空文件

设备:fd00h/64768d Inode:33640358    硬链接:1

权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)

环境:unconfined_u:object_r:usr_t:s0

最近访问:2024-07-15 09:33:23.257781244 +0800

最近更改:2024-07-15 09:33:23.257781244 +0800

最近改动:2024-07-15 09:33:23.257781244 +0800

创建时间:-

创建文件并配置文件的修改时间(文件不存在就创建并修改时间 ,文件存在只配置最后修改时间 )

语法:touch -m -d 日期时间格式 文件名称

[root@localhost ~]# touch /opt/b.txt -m -d "2024-7-15 00:00"

[root@localhost ~]# ls -l /opt/

[root@localhost ~]# touch /opt/a.txt -m -d "2024-7-14 00:00"

[root@localhost ~]# touch /opt/d.txt -m -d "2024-7-10 00:00"

[root@localhost ~]# touch /opt/e.txt

[root@localhost ~]# ls -l /opt/

总用量 0

-rw-r--r--. 1 root root 0 7月  14 00:00 a.txt

-rw-r--r--. 1 root root 0 7月  15 00:00 b.txt

-rw-r--r--. 1 root root 0 7月  15 09:33 c.txt

-rw-r--r--. 1 root root 0 7月  10 00:00 d.txt

-rw-r--r--. 1 root root 0 7月  15 09:38 e.txt

[root@localhost ~]# touch /opt/e.txt -m -d "2024-7-13 00:00"       //修改文件时间

[root@localhost ~]# ls -l /opt/

总用量 0

-rw-r--r--. 1 root root 0 7月  14 00:00 a.txt

-rw-r--r--. 1 root root 0 7月  15 00:00 b.txt

-rw-r--r--. 1 root root 0 7月  15 09:33 c.txt

-rw-r--r--. 1 root root 0 7月  10 00:00 d.txt

-rw-r--r--. 1 root root 0 7月  13 00:00 e.txt

删除系统/var/log/ 10天之前的日志,格式都是.log文件

方法1 报错,rm不支持这种写法

方法2 rm和ls不支持管道

方法3 使用xargs 将查询结果交给rm,可行

[root@localhost ~]# find /opt/ -mtime +3     //+3表示三天之前的文件

/opt/d.txt

[root@localhost ~]# find /opt/ -mtime +1      //表示一天以内的文件

/opt/d.txt

/opt/e.txt

[root@localhost ~]# find /opt/ -mtime -3      //-3表示三天以内的文件

/opt/

/opt/c.txt

/opt/b.txt

/opt/a.txt

/opt/e.txt

[root@localhost ~]# find /opt/ -mtime +3|xargs rm -rf     //删除三天之前的文件(删除了d.txt)

[root@localhost ~]# ls -l /opt/

总用量 0

-rw-r--r--. 1 root root 0 7月  14 00:00 a.txt

-rw-r--r--. 1 root root 0 7月  15 00:00 b.txt

-rw-r--r--. 1 root root 0 7月  15 09:33 c.txt

-rw-r--r--. 1 root root 0 7月  13 00:00 e.txt

根据文件size大小搜索文件

find 路径 -size 文件大小 [常用单位 k M G]

size值 搜索等于size的文件

-size值 【0,size值)

+size值 (size值,正无穷)

扩展命令 dd

使用dd创建扩展命令

生成指定大小的测试文件

语法

dd if=/dev/zero of=文件名称 bs=1M count=1

if表示输入文件

of表示输出文件

bs代表字节为单位的块大小

count代表被复制的块

其中/dev/zore是一个字符设备,会不断地返回0字节的文件

案例创建一个1m的文件

#查看文件

[root@localhost opt]# ls

a.txt b.txt c.txt d.txt

# 删除文件

[root@localhost opt]# rm -rf *

[root@localhost ~]# find / -size +100M    //搜索文件大于100M

创建名称为a.txt,大小为1m的文件

[root@localhost ~]# dd if=/dev/zero of=/opt/a.txt bs=1M count=1

记录了1+0 的读入

记录了1+0 的写出

1048576字节(1.0 MB)已复制,0.00308441 秒,340 MB/秒

生成其他大小的文件

[root@localhost opt]# dd if=/dev/zero of=b.txt bs=5M count=1

[root@localhost opt]# ls -l  

[root@localhost opt]# ls -lh

scp要求两台主机的系统都是linux系统

使用scp下载文件和目录

语法

scp [选项] 用户名@linux主机地址:/资源路径 linux本地文件路径

复制文件

scp上传文件

[root@localhost ~]# scp root@192.168.226.33:/opt/a.txt /opt/      

root@192.168.226.33's password:

a.txt                               100%    0     0.0KB/s   00:00    

计划任务:

[root@localhost ~]# crontab -l     //查看计划任务

no crontab for root             //没有计划任务

[root@localhost ~]# which ls

alias ls='ls --color=auto'

/usr/bin/ls

每分钟自动将opt目录中的文件名写道root目录下list文件中

[root@localhost ~]# crontab -e     //编写计划任务

*/1**** /usr/bin/ls /opt/ >> /root/list

[root@localhost ~]# crontab -l        //查看计划任务

*/1 * * * * /usr/bin/ls /opt/ >> /root/list

[root@localhost ~]# crontab -e

*/1 * * * * /usr/bin/ls /opt/ >> /root/list

29 * * * * /usr/bin/echo "我是李四echo" > /root/echo.txt

[root@localhost ~]# crontab -l

*/1 * * * * /usr/bin/ls /opt/ >> /root/list    每一分钟执行一次

29 * * * * /usr/bin/echo "我是李四echo" > /root/echo.txt    每一小时的29分执行一次

30 * * * * /usr/bin/echo "我手绘声" >> /root/echo.txt        每一小时的30分执行一次

*/1 * * * * /usr/bin/echo "我是好人" >> /root/minute.txt

[root@localhost ~]# date     //时间戳

2024年 07月 15日 星期一 14:42:06 CST

[root@localhost ~]# date "+%T"

14:43:32

[root@localhost ~]# date "+%F"     

2024-07-15

[root@localhost ~]# date "+%Y"

2024

[root@localhost ~]# date "+%m"

07

[root@localhost ~]# date "+%d"

15

[root@localhost ~]# date "+%Y%m%d"%

20240715

练习:

1.使⽤ls查看/etc/⽬录下所有的⽂件信息

[root@web2 ~]# ls /etc/*

2. 使⽤ls查看/etc/⽬录下名包含“a”字⺟的⽂件或者⽬录信息

[root@web2 ~]# ls /etc -name *a

3. 使⽤ls查看/etc/⽬录下以".conf"结尾的⽂件信息

[root@web2 ~]#ls /etc -name ".conf" -type f

4. 使⽤ls查看/etc/⽬录中以"y"字⺟开头的⽂件信息

[root@web2 ~]#ls /etc -name "y*" -type f

5. find查找/var/⽬录中以“.log”⽂件

[root@web2 ~]# find /var -name "*.log" -type f

6. 在opt⽬录下创建test⽬录

[root@web2 ~]# mkdir -p /opt/test

7.在test⽬录中创建abc.txt,def.txt.ghi.txt,xxx.txt.yyy.txt五个⽂件

[root@web2 ~]# touch /opt/test/abc.txt /opt/test/def.txt /opt/test/ghi.txt /opt/test/xxx.txt /opt/test/yyy.txt

[root@web2 ~]# ls -l /opt/test/

-rw-r--r--. 1 root root 0 7月  15 22:06 abc.txt

drwxr-xr-x. 2 root root 6 7月  15 18:59 d0

-rw-r--r--. 1 root root 0 7月  15 22:06 def.txt

-rw-r--r--. 1 root root 0 7月  15 22:06 ghi.txt

drwxr-xr-x. 2 root root 6 7月  15 22:05 test

-rw-r--r--. 1 root root 0 7月  15 22:06 xxx.txt

-rw-r--r--. 1 root root 0 7月  15 22:06 yyy.txt

8. 修改以上5个⽂件的最后修改时间分别为15,14,13,12,11,10⽇

[root@web2 ~]# touch /opt/test/abc.txt -m -d "2024-7-15 00:00"

您在 /var/spool/mail/root 中有新邮件

[root@web2 ~]# touch /opt/test/abc.txt -m -d "2024-7-15 00:00"

[root@web2 ~]# touch /opt/def.txt -m -d "2024-7-14 00:00"

[root@web2 ~]# touch /opt/ghi.txt -m -d "2024-7-13 00:00"

[root@web2 ~]# touch /opt/test/xxx.txt -m -d "2024-7-12 00:00"

[root@web2 ~]# touch /opt/test/yyy.txt -m -d "2024-7-11 00:00"

[root@web2 ~]# ls -l /opt/test/

-rw-r--r--. 1 root root 0 7月  15 00:00 abc.txt

-rw-r--r--. 1 root root 0 7月  14 00:00 def.txt

-rw-r--r--. 1 root root 0 7月  13 00:00 ghi.txt

-rw-r--r--. 1 root root 0 7月  12 00:00 xxx.txt

-rw-r--r--. 1 root root 0 7月  11 00:00 yyy.txt

9. 在test⽬录下创建a⽬录

[root@web2 ~]# mkdir -p /opt/test/a

10. 将以上5个⽂件复制⼀份到a⽬录中

[root@web2 ~]# cp -r /opt/test/* /opt/test/a

[root@web2 ~]# ls /opt/test/a

abc.txt  def.txt  ghi.txt  xxx.txt  yyy.txt

11.将a⽬录⽂件做成bak.tar.gz⽂件保存到家⽬录中

[root@web2 ~]# pwd

/root

[root@web2 ~]# tar -zcvf /home/bak.tar.gz /opt/test/a

[root@web2 ~]# ls /home

anaconda-ks.cfg  bak.tar.gz  echo.txt  list  minute.txt

12. 使⽤find删除test⽬录下3天前的⽂件

[root@web2 ~]# find /test -mtime +3 -type f -exec rm -rf {} \;

13. find删除opt⽬录下3天内的⽂件

[root@mj ~]# touch /opt/m.txt /opt/n.txt 

[root@mj ~]# ls -l /opt/

-rw-r--r--. 1 root root 13022098 7月   8 14:27 apache-tomcat-10.1.25.tar.gz

-rw-r--r--. 1 root root      267 7月   8 19:00 application.perperties

-rw-r--r--. 1 root root      101 7月   8 22:10 Main.java

-rw-r--r--. 1 root root        0 7月  16 00:41 m.txt

-rw-r--r--. 1 root root        0 7月  16 00:41 n.txt

[root@mj ~]# find /opt/ -mtime -3 -type f -exec rm -rf {} \;

[root@mj ~]# ls -l /opt/

总用量 12728

drwxr-xr-x. 2 root root        6 7月  16 00:41 123.txt

-rw-r--r--. 1 root root 13022098 7月   8 14:27 apache-tomcat-10.1.25.tar.gz

-rw-r--r--. 1 root root      267 7月   8 19:00 application.perperties

-rw-r--r--. 1 root root      101 7月   8 22:10 Main.java

14. find删除正好第三天的⽂件

[root@mj ~]# find /opt -time 3 -type f -exec rm -rf {} \;

15. 将/opt/test/a⽬录中的⽂件复制⼀份到/opt/test/⽬录下

[root@web2 ~]# cp -r /opt/test/a/* /opt/test/

16. 创建⽬录/opt/test0

[root@web2 ~]# mkdir -p /opt/test0

[root@web2 ~]# ls /opt

 test0  

17. 在/opt/test0/⽬录中创建三个⽂件 a.mp4(5M),b.mp4(20M),c.mp4(80M)

[root@web2 ~]# dd if=/dev/zero of=/opt/test0/a.mp4 bs=5M count=1

[root@web2 ~]# dd if=/dev/zero of=/opt/test0/b.mp4 bs=200M count=1

[root@web2 ~]# dd if=/dev/zero of=/opt/test0/c.mp4 bs=80M count=1

18. 创建⽬录/opt/test0/b/

[root@web2 ~]# cd /opt/test0

[root@web2 test0]# pwd

/opt/test0

[r

19. 将/opt/test0/中的⽂件复制⼀份/opt/test0/b/⽬录中

[root@web2 test0]# ls

mp4  b  b.mp4  c.mp4
[root@web2 test0]# cp -r ./* /opt/test0/b

[root@web2 test0]# ls /opt/test0/b

a.mp4  b  b.mp4  c.mp4

20. find查询/opt/test0/⽬录中⽂件⼤于20M的,并删除

[root@web2 test0]# ls

a.mp4  b  b.mp4  c.mp4

[root@web2 test0]# find /opt/test0/ -type f -size +20M -exec rm -rf {} \;

[root@web2 test0]# ls /opt/test0

a.mp4  b

21. find查询/opt/test0/⽬录中⽂件⼩于20M的⽂件并删除

[root@web2 test0]# find /opt/test0/ -type f -size -20M -exec rm -rf {} \;

[root@web2 test0]# ls -l /opt/test0

drwxr-xr-x. 3 root root 15 7月  15 23:15 b

22. find查找/opt/test0/⽬录中⽂件size为20M的⽂件并删除

[root@web2 test0]# find /opt/test0/ -type f -size 20M -exec rm -rf {} \;

23. /opt/test0/b中的⽂件复制⼀份到/opt/test0中

[root@web2 test0]# cp -r /opt/test0/b/* /opt/test0/

[root@web2 test0]# ls /opt/test0

b  test0

oot@web2 test0]# mkdir b

25. 将家⽬录中的bak.tar.gz⽂件上传到新主机的/opt⽬录中

[root@web2 ~]#scp /home/bak.tar.gz root@192.168.2.12:/opt/

26. 将新主机的/etc/skel/⽬录下载到当前主机的/opt⽬录中

[root@mj ~]#scp /etc/skel/ root@192.168.2.11:/opt

27. 设置计划任务,每周3将/etc/yum.repos.d/⽬录下的.repo⽂件压缩保存到tmp,在⽂件

名中添加时间戳

[root@web2 ~]# whereis tar

tar: /usr/bin/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz

[root@web2 ~]# crontab -e

* * * * 3 /usr/bin/tar -zcvf /tmp/etc_$(date "+\%Y\%m\%d\%H\%M\%S").tar.gz /etc/yum.repos.d/*.repo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值