当前位置: 首页 > java >正文

小白进阶shell学习-----脚本实战案例

文章目录

  • 脚本实战案例
    • 1.自动备份文件或目录
    • 2.批量重命名文件
    • 3.批量删除文件
    • 4.查找并删除指定名称的文件
    • 5.查找并替换文件内容
    • 6.批量创建文件
    • 7.创建文件夹并移动文件
    • 8.在文件夹中查找文件
    • 9.计算文件夹中文件数量
    • 10.计算文件夹大小
    • 11.定时执行命令
    • 12.发送邮件
    • 13.批量解压缩文件
    • 14.在文件夹中查找并删除文件
    • 15.批量重命名文件
    • 16.对文件夹中的文件按修改时间排序
    • 17.批量转换文件格式
    • 18.删除文件夹中的空文件夹
    • 19.删除文件夹中的空文件
    • 20.批量更改文件权限
    • 21.使用awk分隔文件

脚本实战案例

1.自动备份文件或目录

#!/bin/bash
read -p "请选择你要备份文件的目录:" dirname
read -p "请选择你要备份的文件:" filename
time_now=$(date | awk '{print $1,$2,$3}' | tr -d " ")
tar -zcvf "$dirname/$filename.$time_now.gz" $dirname/$filename

2.批量重命名文件

#!/bin/bash
hou=".sh"
zhu=$(find dir/ -name "*${hou}")
for file in $zhu
dofilename=$(basename $file .sh)mv $file dir/$filename.txt
done

3.批量删除文件

find dir/ -name "*.sh" -exec rm -rf {} \;

4.查找并删除指定名称的文件

#!/bin/bash
read -p "请选择你要删除的文件:" file
find dir/ -name "$file" -exec rm -rf {} \;

5.查找并替换文件内容

#!/bin/bash
read -p "请选择你要查找的文件:" file
read -p "请选择你要查找的字符串:" old_string
read -p "请选择你要更改的字符串:" new_string
find dir/ -name $file -exec sed -i 's/${old_string}/${new_string}/g' {} \;

6.批量创建文件

#!/bin/bash
abc=file
num=10
for i in $(seq 1 $num);
dotouch "dir/$file$i.txt"
done

7.创建文件夹并移动文件

#!/bin/bash
read -p "请选择你要创建的目录:" dir_name
read -p "请选择你要移动的的文件:" file_name
mkdir $dir_name && mv $file_name $dir_name/$file_name

8.在文件夹中查找文件

#!/bin/bash
read -p "请选择你要查找的文件:" file_name
find / -name "$file_name"

9.计算文件夹中文件数量

#!/bin/bash
read -p "请选择你要查找的目录:" dir_name
num=$(find $dir_name -type f | wc -l)
echo "$dir_name目录中包含$num个普通文件"

10.计算文件夹大小

#!/bin/bash
read -p "选择要查看大小的文件名:" dirname
size=$(stat $dirname | awk '/大小/ {print $1}')
echo "$dirname的$size字节"

11.定时执行命令

#!/bin/bash
commond=$(echo hello)
num=60
while true
doecho $commond
sleep $num
done

12.发送邮件

#!/bin/bash# 设置收件人邮箱
to="recipient@example.com"# 设置发件人邮箱
from="sender@example.com"# 设置邮件主题
subject="Test Email"# 设置邮件内容
body="This is a test email."# 发送邮件
echo "${body}" | mail -s "${subject}" -r "${from}" "${to}"

13.批量解压缩文件

#!/bin/bash
read -p "请选择你要解压缩文件的目录:" dirname
count=".gz"
for i in $dirname/*$count
dotar -xvf $i 
done

14.在文件夹中查找并删除文件

#!/bin/bash
read -p "请选择你要删除的文件:" file
find dir/ -name "$file" -exec rm -rf {} \;

15.批量重命名文件

#!/bin/bash
hou=".sh"
zhu=$(find dir/ -name "*${hou}")
for file in $zhu
dofilename=$(basename $file .sh)mv $file dir/$filename.txt
done

16.对文件夹中的文件按修改时间排序

#!/bin/bash
read -p "请选择你要按修改时间排序的目录:" dirname
find $dirname -type f -exec ls -t {} \;

17.批量转换文件格式

#!/bin/bash# 设置文件扩展名
extension=".txt"# 设置新文件扩展名
new_extension=".md"# 遍历当前目录下的所有文件
for file in *${extension}
do# 转换文件格
pandoc -s "${file}" -o "${file/${extension}/${new_extension}}"
done注意:需要先安装Pandoc。

18.删除文件夹中的空文件夹

#!/bin/bash
read -p "请选择你要删除空文件的目录:" dir
find $dir -type d -empty -exec rm -rf {} \;

19.删除文件夹中的空文件

#!/bin/bash
read -p "请选择你要删除空文件的目录:" dir
find $dir -type f -empty -exec rm -rf {} \;

20.批量更改文件权限

#!/bin/bash
read -p "请选择你要更改文件的路径:" dirname
read -p "请选择你要更改的权限类型:" num
echo $num | grep -E "^[0-7]{3}$" > /dev/null
if [ $? -eq 0 ];
thenfind $dirname -type f -exec chmod $num {} \;
elseecho "权限写入错误"
fi

21.使用awk分隔文件

#!/bin/bash
kername=$(uname -a | awk -F " " '{print $1}')
host=$(uname -a | awk -F " " '{print $2}')
kerversion=$(uname -a | awk -F " " '{print $3}')
ker=$(uname -a | awk -F "x86_64" '{print $2}')
sysjg=$(uname -a | awk -F " " '{print $12 $13 $14}')
biao=$(uname -a | awk -F " " '{print $15}')
echo "内核名称为$kername,主机名为$host,内核版本为$kerversion,内核编译信息为$ker,系统架构为$sysjg,带有$biao标识"[root@localhost ~]# bash 4
内核名称为Linux,主机名为localhost,内核版本为4.18.0-553.el8_10.x86_64,内核编译信息为 #1 SMP Fri May 24 13:05:10 UTC 2024 ,系统架构为x86_64x86_64x86_64,带有GNU/Linux标识#本脚本只为演示awk用法,以上信息可用uname命令直接得出
http://www.xdnf.cn/news/13162.html

相关文章:

  • 论文解析:一文弄懂ResNet(图像识别分类、目标检测)
  • 华为云Flexus+DeepSeek征文 | 大模型+高性能云服务的化学反应:医疗场景Agent开发
  • 【数组和二分查找】
  • YOLOv5白皮书 common.py 文件解读
  • C++:模板
  • 无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型
  • DMA:在不同内存空间建立目的地址的情况分析及后果
  • 解锁 Nginx Stream 代理—全面掌握 ngx_stream_proxy_module
  • echarts使用笔记
  • java容易被忽略的事情
  • docker 安装运行mysql8.4.4
  • ceph 查看 pg 迁移进度的脚本
  • Oracle SQL*Plus 配置上下翻页功能
  • 大数据零基础学习day1之环境准备和大数据初步理解
  • APP开发好后如何分发内测
  • uniapp+vue2+h5图片下载保存,微信浏览器、非微信浏览器
  • java8 通过方法引用 vo::setLevel将对象的 setter 方法作为参数传递
  • Linux日志管理和时间管理
  • Java多线程实现之Callable接口深度解析
  • PyTorch终极实战:从自定义层到模型部署全流程拆解​
  • 接口测试中缓存处理策略
  • Code Composer Studio快捷键
  • OkHttp 中实现断点续传 demo
  • 【数据结构】图论经典:Dijkstra最短路径算法精解与工程优化
  • 计算机毕业设计微信小程序题库系统 在线答题 题目分类 错题本管理 学习记录查询系统源码+论文+PPT+讲解 基于微信小程序的题库系统设计与实现
  • JavaScript 核心对象深度解析:Math、Date 与 String
  • qt3d自定义生成mesh图形
  • 深度学习小项目合集-视频介绍下自取
  • 计算机系统概述(4)
  • LocalDate类使用