【Linux】Shell脚本(文件操作)

在上一篇博客中,我分享了一些关于Shell编程的整理内容,希望能够为大家提供一些基础知识和入门指导。这次,我将继续和大家分享一些更具实用价值的Shell脚本示例,主要是以文件操作相关的内容。

批量重命名文件

shell 复制代码
	#!/bin/bash
	# Function: 批量更改当前目录下的指定文件类型名
	
	read -p "请输入文件后缀类型: " FILE_TYPE
	FILE=*.${FILE_TYPE}
	
	if [ -z FILE ]; then
	    echo "查无此文件后缀类型!"
	    exit 1
	fi
	
	for file in FILE
	do
	    echo "当前文件:$file"
	    read -p "请输入更改名: " newName
	    mv "$file" "${newName}.${FILE_TYPE}"
	    echo "Successfully Renamed $file to ${newName}.${FILE_TYPE}"
	done
  1. #!/bin/bash:这是一个Shebang行,用来指定使用哪种解释器来执行这个脚本,这里指定使用Bash解释器。
  2. # Function: 批量更改当前目录下的指定文件类型名:这是一个注释行,用来说明这个脚本的功能。
  3. read -p "请输入文件后缀类型: " FILE_TYPE :这一行通过read命令提示用户输入要更改的文件类型后缀,并将输入的值赋给变量FILE_TYPE
  4. FILE=*.${FILE_TYPE} :这一行将**FILE**变量设置为当前目录下所有以用户输入的文件类型后缀结尾的文件名。
  5. if [ -z FILE ]; then :这是一个条件判断语句,判断变量**FILE**是否为空,如果为空,则输出提示信息并退出脚本。
  6. for file in FILE :这是一个for循环,遍历变量**FILE**中的每个文件名。
  7. echo "当前文件:$file":输出当前处理的文件名。
  8. read -p "请输入更改名: " newName :提示用户输入新的文件名,并将输入的值赋给变量**newName**。
  9. mv "$file" "${newName}.${FILE_TYPE}" :使用**mv**命令将当前文件名更改为用户输入的新文件名,并保持文件类型后缀不变。
  10. echo "Successfully Renamed $file to ${newName}.${FILE_TYPE}":输出更改成功的提示信息。

批量处理文件

shell 复制代码
	#!/bin/bash
	#Function: 批量处理当前目录文件 edit view remove next quit
	
	DIRS=$1
	
	if [ ! -z $DIRS ] ; then
		echo "未设置位置参数!"
		exit 1
	fi
	
	for i in *
	do
		if [ ! -f i] ; then
			continue
		fi
	
		while true
		do
			echo -n "$i: Edit, View, Remove, Next, Quit? [e|v|r|n|q]: "
			read choice
			case $choice in
				e* )	vim $i;;
	
				v* ) cat $i;;
	
				r* ) rm -i $i && break;;
	
				n* ) break;;
	
				q*)  exit 0;;
	
				* ) echo "Illegal Option"
			esac
		done
	done
  1. #!/bin/bash:指定使用Bash解释器来执行这个脚本。
  2. #Function: 批量处理当前目录文件 edit view remove next quit:这是一个注释行,说明了这个脚本的功能。
  3. DIRS=$1:将位置参数$1赋给变量DIRS,这个脚本似乎没有使用到这个变量。
  4. if [ ! -z $DIRS ] ; then:检查变量DIRS是否为空,如果不为空,则输出提示信息并退出脚本。
  5. for i in *:遍历当前目录下的所有文件。
  6. if [ ! -f i] ; then continue fi:检查当前文件是否为普通文件,如果不是,则跳过当前循环。
  7. while true:进入一个无限循环,直到用户选择退出。
  8. echo -n "$i: Edit, View, Remove, Next, Quit? [e|v|r|n|q]: ":输出操作选项给用户选择。
  9. read choice:读取用户的选择。
  10. case $choice in:根据用户选择的操作进行不同的处理。
  11. e* ) vim $i;;:如果用户选择编辑,则使用vim编辑器打开当前文件。
  12. v* ) cat $i;;:如果用户选择查看,则使用cat命令显示当前文件内容。
  13. r* ) rm -i $i && break;;:如果用户选择删除,则使用rm命令删除当前文件,并且跳出内层循环。
  14. n* ) break;;:如果用户选择下一个文件,则跳出内层循环。
  15. q*) exit 0;;:如果用户选择退出,则退出脚本。
  16. ) echo "Illegal Option":如果用户选择了非法的操作,输出提示信息。

备份指定路径文件

shell 复制代码
	#!/bin/bash
	#Function: 备份指定路径文件
	
	# 定义备份的目的地目录
	BACKUP_PATH=~/backup
	
	
	# 生成一个时间戳,用于文件名
	DATE=$(date +%Y%m%d%H)
	
	if [ ! -d "$BACKUP_PATH" ]; then
		mkdir $BACKUP_PATH
	fi
	
	
	# 提示用户输入需要备份的源目录
	read -p "请输入您需要备份的目录路径: " source_path
	
	# 检查输入的目录是否存在
	if [ ! -d "$source_path" ]; then
	    echo "提供的目录不存在,请检查路径是否正确:$source_path"
	    exit 1
	fi
	
	# 执行备份操作
	tar -czf ${BACKUP_PATH}/backup-${DATE}.tar.gz -C "$source_path" .
	echo "已完成 $source_path 的备份,备份文件存储在 $BACKUP_PATH/backup-$DATE.tar.gz"
  1. #!/bin/bash:指定使用Bash解释器来执行这个脚本。
  2. #Function: 备份指定路径文件:这是一个注释行,说明了这个脚本的功能。
  3. BACKUP_PATH=~/backup:定义备份的目的地目录为用户的家目录下的backup文件夹。
  4. DATE=$(date +%Y%m%d%H):生成一个时间戳,用于备份文件名,格式为年月日时。
  5. if [ ! -d "$BACKUP_PATH" ]; then:检查备份目录是否存在,如果不存在则创建。
  6. read -p "请输入您需要备份的目录路径: " source_path:提示用户输入需要备份的源目录路径,并将输入的值赋给变量source_path。
  7. if [ ! -d "$source_path" ]; then:检查输入的源目录是否存在,如果不存在则输出错误信息并退出脚本。
  8. tar -czf ${BACKUP_PATH}/backup-${DATE}.tar.gz -C "$source_path" .:使用tar命令将指定路径的文件和目录打包成一个压缩文件,并存储在备份目录下,文件名包含了时间戳以区分不同的备份文件。
  9. echo "已完成 $source_path 的备份,备份文件存储在 $BACKUP_PATH/backup-$DATE.tar.gz":输出备份完成的提示信息,包括源目录路径和备份文件存储路径。
相关推荐
o(╥﹏╥)7 分钟前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
娶不到胡一菲的汪大东11 分钟前
Ubuntu概述
linux·运维·ubuntu
阿里嘎多学长21 分钟前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_24 分钟前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端
那就举个栗子!38 分钟前
Ubuntu 20.04下Kinect2驱动环境配置与测试【稳定无坑版】
linux·ubuntu
灯火不休➴39 分钟前
[Xshell] Xshell的下载安装使用、连接linux、 上传文件到linux系统-详解(附下载链接)
linux·运维·服务器
Lukea1139 分钟前
【新教程】Ubuntu server 24.04配置无线网WiFi
linux·ubuntu·教程
小峰编程41 分钟前
独一无二,万字详谈——Linux之文件管理
linux·运维·服务器·云原生·云计算·ai原生
卜及中42 分钟前
【Linux】资源隔离机制 — 命名空间(Namespace)详解
linux·服务器·php
扛枪的书生1 小时前
Socat 命令总结
linux