文章目录 脚本实战案例 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
do filename = $( 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) ;
do touch "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
do echo $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
do tar -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
do filename = $( 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 ] ;
then find $dirname -type f -exec chmod $num { } \ ;
else echo "权限写入错误"
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 ~]
内核名称为Linux,主机名为localhost,内核版本为4.18.0-553.el8_10.x86_64,内核编译信息为