光速上手Shell——简单批量文件操作为例

本文介绍了如何使用Shell脚本自动化处理批量文件重命名的问题,通过一个具体的MTK平台Modem文件重命名案例,展示了如何编写和解释Shell脚本,包括文件测试符、逻辑运算、参数检测、通配符匹配等核心概念,帮助读者快速掌握Shell脚本的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阅读前提:你应该使用过Linux,了解脚本语言的基础概念“弱类型”以及“变量无须定义即可使用”。

几句话

在Linux中,绝大部分操作是这样一个流程:用户–>Shell–>kernel–>硬件。
既能对用户屏蔽复杂操作,又能对kernel起到一定保护,Shell就是处在这样一个位置上的“壳(Shell)”。
Shell中能够使用到的命令有内建命令外部命令之分,内建命令即为Shell自身提供的命令,相当于调用当前的Shell进程执行一个函数;而外部命令则效率会更差一些,因为它不但会触发磁盘IO,还需要fork出一个单独的进程,执行完再退出,而它的优点也是显然易见的——你有海量功能强大的外部工具可以调用,所以能够用十分少的代码完成非常多的功能。
而学习Shell最重要的原因,就是将繁琐的工作全都自动化处理。

背景

在MTK平台上,每次更新Modem文件都伴随着一个十分机械化的过程:打patch,编译,最后是将编译生成的文件按一定格式重命名再放置到Android工程的相应目录下并修改相应的构建参数。
这里我们仅讨论重命名的情况,MTK的说明如下图:
重命名说明.png
可以看到,我们要将/database,/bin两个目录下的7个文件改名为右栏的格式。
比如catcher_filter.bin -> catcher_filter_1_lwg_n.bin

脚本代码

Talk is cheap,show me the code.
我们先上完整代码,其后进行详细讲解:

#!/bin/bash
# Created by Duanze 2015/12/28
# For modem update, to make your hands free :)
function confirmOp(){
    read -p $1"[Y/n]:" N
    if [ "y"x != ${N}x -a "Y"x != ${N}x -a ""x != ${N}x ]; then
        echo "exit program"
        exit
    fi
}

#if false;then
if [ ! -f Android.mk ]; then
    echo " There is no 'Android.mk' !"
    exit
fi
#fi
if [ ! $1 ]; then
    echo " parameter 1 is null"
    exit
fi

if [ ! $2 ]; then
    echo " parameter 2 is null"
    exit
fi

sourceDir=$1
targetDir=$2

if [ ! -d $1 ];then
    echo "dir $1 don't exist"
    exit
fi

if [ -d<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值