【Linux】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}":输出更改成功的提示信息。

批量处理文件

	#!/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":如果用户选择了非法的操作,输出提示信息。

备份指定路径文件

	#!/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":输出备份完成的提示信息,包括源目录路径和备份文件存储路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/567680.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爆破、批量PoC扫描工具 -- POC-T

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。…

【java】27:java绘图

坐标体系 - 介绍: 下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点个像素;第二个是y坐标,表示当前位置为垂直方向…

视频不够清晰怎么办?教你几种有效方法

在我们日常生活中,有时候我们会遇到不清晰的视频,这给我们带来了很多不便。那么,怎么将不清晰的视频变清晰呢?本文将为您介绍一些常用的软件工具,帮助您提升视频的清晰度。 方法一:使用AI技术 AI技术可以通…

springboot-异步、定时、邮件任务

目录 一,前言 二,异步 2.1,案例: 1,首先创建一个service: 2,Controller: ① 想办法告诉spring我们的异步方法是异步的,所以要在方法上添加注解 Async ②去springboot主程序中开…

【Java--数据结构】模拟实现ArrayList

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 LIst 顺序表ArrayList 顺序表优点 IList接口 ArrayList中定义要操作的数组 在MyArrayList中 重写接口方法 新增元素 在指定位置插入元素 pos不合法异常 判断和查找元素…

Bentley二次开发教程19-文件及模型管理-参照操作

参照操作 模型参照(*.dgn) 当我们需要与同专业,或者跨专业协同配合时,总是无可避免的需要参照他人的模型。若想通过编程的方式提前将参照模型与指定场景绑定起来,那么就需要掌握模型参照的方法。关于该方法大致的使用…

python创建线程和结束线程

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 python创建线程和结束线程 在 Python 中,线程是一种轻量级的执行单元&#xff…

C++-DAY1

思维导图 有以下定义,说明哪些量可以改变哪些不可以改变? const char *p; const (char *) p; char *const p; const char* const p; char const *p; (char *) const p; char const* const p; const char *p:指针 p 所指向的内容不可改…

【C++庖丁解牛】C++11---右值引用和移动语义

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1 左值引用和右值引用2 左…

是德软件89600 RFID使用笔记

文章目录 1、进入RFID软件:2、RFID软件解调设置项3、如何查看一段指令数据本文是日常工作的笔记分享。 lauch VSA(矢量频谱分析)后会出现以下界面: 当然这是因为频谱仪的输入有信号才显示如下: 否则就显示频谱仪的噪底 这里的设置过程同一般的频谱仪,比如中心频率、span…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

ApiHug 的初心-ApiHug101

视频 秒懂 ApiHug -019 HOPE 🔥 H.O.P.E.: Help other people excellent 💝 是这个项目最初的初心 🤗 ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ 🏠 gitee github search ApiHug ApiHug 🤗 ApiHug {Post…

数据结构(学习笔记)王道

一、绪论 1.1 数据结构的基本概念 数据:是信息的载体,是描述客观事物属性的数、字符以及所有输入到计算机中并被计算机程序识别和处理的符号的集合。(计算机程序加工的原料)数据元素:数据的基本单位,由若干…

相关电路整理(工程)相关FOC电路整理

1. 基于STM32G4的FOC电机驱动学习板 1.1 防反接电路 电源正确接入时 电流从 VIN 端流向负载,经由 Q3(NMOS) 通向地(GND)。在上电瞬间,由于 MOS 管的体二极管效应,地回路通过体二极管接通。接下来,由于 Vgs…

【sping】在logback-spring.xml 获取项目名称

在日志文件中我们想根据spring.application.name 创建出的文件夹。 也不想死在XML文件中。 application.yml spring:application:name: my-demo logback-spring.xml <springProperty name"application_name" scope"context" source"spring.app…

Unity类银河恶魔城学习记录13-4 p145 Save Skill Tree源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili GameData.cs using System.Collections; using System.Collections.Generic…

网络带宽相关

1.tcp重传率计算 watch -n 5 “cat /proc/net/snmp” 如下博客所讲 https://blog.csdn.net/michaelwoshi/article/details/121189743 2.iperf测试网络带宽 #客户端 #tcp iperf -c 服务端ip -P 4 -b 200M #udp iperf -c 服务端ip -u -P 4 -b 1000M -l 10K #服务端 iperf -s

云架构(五)BBF模式

BFF模式&#xff08;Backends for Frontends pattern&#xff09;- https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends。 创建单独的后台服务用以提供给特定的前端或者接口。当你希望避免为多个接口定制单独的后台时&#xff0c;此模…

隋总分享:Temu选品师算不算是蓝海项目?

在当今日新月异的互联网经济浪潮中&#xff0c;跨境电商正成为一股不可忽视的力量。最近&#xff0c;网红隋总对Temu选品师这一职业进行了深入介绍&#xff0c;引发了广泛关注。那么&#xff0c;Temu选品师是否真的可以视为一个蓝海项目呢?本文将对此进行一番细致的探讨。 首先…

RBA认证是什么?RBA认证的流程是怎么样的

RBA认证&#xff0c;即“责任商业联盟”认证&#xff0c;英文全称是Responsible Business Alliance。这是一个为电子行业或以电子为主要组成部分的行业及其供应链制定的社会责任审核标准。该标准旨在确保工作环境的安全、工人受到尊重并富有尊严、商业营运合乎环保性质并遵守道…