【Linux基础命令使用】查找文件、归档管理、计划任务命令详解
查找文件、归档管理、计划任务命令详解
- 本章学习目标
- 操作演示
- find 查找文件
- 按名称查找文件
- 忽略大小写查找
- 按文件类型查找
- 按权限查找
- 按大小查找
- 查找并归档
- tar 归档文件
- 打包目录(不压缩)
- 打包压缩为gzip格式
- 打包压缩bzip2格式
- 列出归档内容(不解压)
- 解压到当前目录
- 解压到指定目录
- 解压特定文件
- zip 压缩文件
- 压缩单个文件
- 压缩多个文件
- 静默模式压缩
- 递归压缩目录
- 查看压缩包内容
- at 一次性计划任务(不常用)
- 绝对时间执行任务
- 相对时间执行任务
- 查看任务队列
- 查看任务详情
- 删除任务
- crontab 定时任务(常用)
- 编辑当前用户定时任务
- 列出所有定时任务
- 删除所有任务
- 实现复杂时间任务
- 总结
本章学习目标
-
查找文件:搜索文件,可以通过名称、文件类型等方式查找文件
-
归档文件:与win一样,Linux也可以实现创建压缩包的功能,只是格式有一些区别,本文讲解常用的格式
-
计划任务:可以实现定时执行我们需要执行的命令,实现需求
操作演示
find 查找文件
演示命令 | 功能描述 | 关键选项作用 |
---|---|---|
find /etc -name "passwd" | 按名称精确查找文件 | -name :匹配完整文件名 |
find /var/log -iname "*.LOG" | 忽略大小写查找 | -iname :不区分大小写匹配 |
find /dev -type b | 按类型查找块设备 | -type b :筛选块设备文件 |
find /home -type f -perm 777 | 按权限查找文件 | -perm :匹配指定权限 |
find / -size +100M | 按大小查找大文件 | -size +n :大于n单位文件 |
find /var/log -name "*.log" -exec tar -rvf logs.tar {} \; | 查找并归档文件 | {} :匹配文件的占位 |
按名称查找文件
[root@localhost ~]# find /etc -name "passwd"
/etc/passwd
/etc/pam.d/passwd
# 在/etc目录查找所有名为passwd的文件
忽略大小写查找
[root@localhost ~]# find /var/log -iname "*.LOG"
/var/log/boot.log
# 查找/var/log下所有.log文件
按文件类型查找
[root@localhost ~]# find /dev -type b
/dev/sda
/dev/sdb
# 查找/dev下的块设备文件(如磁盘)
按权限查找
[root@localhost ~]# find /home -type f -perm 777
/home/user/public.sh
# 查找权限为777的普通文件(高危权限)
按大小查找
[root@localhost ~]# find / -size +100M
/opt/large_dataset.iso
# 查找全盘大于100MB的文件
查找并归档
[root@localhost ~]# find /var/log -name "*.log" -exec tar -rvf logs.tar {} \;
# 将所有.log文件添加到logs.tar归档
tar 归档文件
创建不同格式的归档文件,可以设置是否压缩
演示命令 | 功能描述 | 关键选项作用 |
---|---|---|
tar -cvf /backup/etc_backup.tar /etc | 打包目录(不压缩) | -c : 创建归档 -f : 指定文件名 |
tar -zcvf /backup/logs.tar.gz /var/log | gzip压缩打包 | -z : 启用gzip压缩 |
tar -jcvf /backup/home.tar.bz2 /home | bzip2压缩打包 | -j : 启用bzip2压缩 |
tar -tvf /backup/etc_backup.tar | 查看归档内容 | -t : 列出文件列表 |
tar -xvf /backup/logs.tar.gz | 解压到当前目录 | -x : 解压操作 |
tar -xvf /backup/home.tar.bz2 -C /restore/ | 解压到指定目录 | -C : 指定目标目录 |
tar -xvf /backup/etc_backup.tar etc/passwd | 解压特定文件 | 需精确匹配归档内路径 |
打包目录(不压缩)
[root@localhost ~]# tar -cvf /backup/etc_backup.tar /etc
# -c: 创建归档 -v: 显示过程 -f: 指定文件名(/etc目录被打包为etc_backup.tar)
打包压缩为gzip格式
[root@localhost ~]# tar -zcvf /backup/logs.tar.gz /var/log
# -z: 使用gzip压缩,生成.tar.gz归档文件(压缩/var/log目录)
打包压缩bzip2格式
[root@localhost ~]# tar -jcvf /backup/home.tar.bz2 /home
# -j: 使用bzip2压缩,生成.tar.bz2文件(更高压缩率)
列出归档内容(不解压)
[root@localhost ~]# tar -tvf /backup/etc_backup.tar
# -t: 列出归档内文件列表(不实际解压)
解压到当前目录
[root@localhost ~]# tar -xvf /backup/logs.tar.gz
# -x: 解压文件(默认解压到当前目录)
解压到指定目录
[root@localhost ~]# tar -xvf /backup/home.tar.bz2 -C /restore/
# -C: 指定解压目标目录(/restore/)
解压特定文件
[root@localhost ~]# tar -xvf /backup/etc_backup.tar etc/passwd
# 仅解压归档中的etc/passwd文件(需精确路径匹配)
zip 压缩文件
演示命令 | 功能描述 | 关键选项作用 |
---|---|---|
zip config.zip /etc/hostname | 压缩单个文件 | 默认保留源文件 |
zip logs.zip /var/log/messages /var/log/secure | 压缩多个文件 | 空格分隔多个源文件路径 |
zip -q backup.zip /etc/passwd | 静默模式压缩 | -q :不显示压缩过程 |
zip -r web.zip /var/www/html | 递归压缩目录 | -r :必需,否则只压缩空目录 |
zipinfo web.zip | 查看压缩包内容 | 显示文件列表、大小、压缩率等 |
压缩单个文件
[root@localhost ~]# zip config.zip /etc/hostnameadding: etc/hostname (deflated 33%)
# 将 /etc/hostname 压缩为 config.zip(保留原文件)
压缩多个文件
[root@localhost ~]# zip logs.zip /var/log/messages /var/log/secureadding: var/log/messages (deflated 81%)adding: var/log/secure (deflated 73%)
# 同时压缩两个日志文件到 logs.zip
静默模式压缩
[root@localhost ~]# zip -q backup.zip /etc/passwd /etc/group
# -q:不显示压缩过程(适用于脚本自动化)
递归压缩目录
[root@localhost ~]# zip -r web.zip /var/www/htmladding: var/www/html/ (stored 0%)adding: var/www/html/index.html (deflated 45%)
# -r:递归压缩目录内所有内容(必需选项)
查看压缩包内容
[root@localhost ~]# zipinfo web.zipArchive: web.zipLength Date Time Name0 2025-07-09 14:30 var/www/html/1024 2025-07-09 14:31 var/www/html/index.html
# 列出文件列表、大小、压缩率等详细信息
at 一次性计划任务(不常用)
常用于执行一次性任务
演示命令 | 功能描述 | 关键选项/参数作用 |
---|---|---|
at 15:00 2025-07-10 | 指定绝对时间执行任务 | 日期格式:YYYY-MM-DD HH:MM |
at now + 5 minutes | 指定相对时间执行任务 | `now + n [minutes |
atq | 查看任务队列 | 显示任务ID、时间、用户 |
at -c 2 | 查看任务详情 | -c [任务ID] :输出完整命令和环境变量 |
atrm 1 | 删除任务 | atrm 或 at -d 等效 |
绝对时间执行任务
[root@localhost ~]# at 15:00 2025-07-10
at> /usr/bin/touch /tmp/at_test1.txt
at> <EOT>
job 1 at Thu Jul 10 15:00:00 2025
# 指定绝对时间(2025年7月10日15:00)创建文件
相对时间执行任务
[root@localhost ~]# at now + 5 minutes
at> echo "Task completed at $(date)" > /var/log/at_demo.log
at> <EOT>
job 2 at Tue Jul 9 14:20:00 2025
# 5分钟后记录执行时间到日志文件(`now +` 指定相对时间)
查看任务队列
[root@localhost ~]# atq
1 Thu Jul 10 15:00:00 2025 a root
2 Tue Jul 9 14:20:00 2025 a root
# 列出所有待执行任务(按时间排序)
查看任务详情
[root@localhost ~]# at -c 2
...(输出内容包含环境变量和命令)
echo "Task completed at $(date)" > /var/log/at_demo.log
# 显示任务2的具体命令和环境配置(`-c` 查看完整内容)
删除任务
[root@localhost ~]# atrm 1
[root@localhost ~]# atq
2 Tue Jul 9 14:20:00 2025 a root
# 删除任务1(`atrm` 或 `at -d` 均可)
crontab 定时任务(常用)
演示命令 | 功能描述 | 关键选项/参数作用 |
---|---|---|
crontab -e | 编辑当前用户的定时任务 | 调用默认编辑器(如vi)配置任务 |
crontab -l | 列出当前用户的所有定时任务 | 显示任务列表 |
crontab -r -i | 交互式删除所有任务 | -i :删除前确认 |
编辑当前用户定时任务
[root@localhost ~]# crontab -e
# 打开vi编辑器,添加以下任务:
* * * * * echo "每分钟测试" >> /tmp/cron_test.log # 每分钟记录测试信息
0 3 * * * /sbin/reboot # 每天凌晨3点重启系统
列出所有定时任务
[root@localhost ~]# crontab -l
* * * * * echo "每分钟测试" >> /tmp/cron_test.log
0 3 * * * /sbin/reboot
# 显示当前用户的所有定时任务
删除所有任务
[root@localhost ~]# crontab -r -i
crontab: really delete root's crontab? y
# -i:交互式确认,避免误删
实现复杂时间任务
[root@localhost ~]# crontab -e
# 添加:
0 8-18/2 * * 1-5 /usr/bin/systemctl status httpd # 工作日每2小时(8点至18点)检查Apache状态
*/15 * * * * /root/scripts/backup.sh # 每15分钟执行备份脚本
总结
本文讲解了如何查找、归档文件,介绍了两种归档文件的命令,讲解了两种计划任务的使用,到目前为止已经可以实现在Linux大部分常用的操作,下一章开始进行对Linux命令的查漏补缺,一定要坚持下去啊!