当前目录下后缀为sh的文件,改为后缀shell。

这里列出两种方法,先看第一种。
方法1:
#!/bin/bash

str=`find ./ -name \*.sh`  # 会产生一个列表

file=" $str "   # 需要在列表前后加空格,在shell中,列表或数组的括号前后必须是空格

for i in $file

do

mv $i ${i%sh}shell

done
思路很简单,用find找到符合的文件,存如数组。然后使用mv修改文件名。

其中${i%sh}shell是修改后缀后的文件名。%是将字符串变量i中sh以及sh右侧的字符全部删除。

也可以这样写,${i%.*}.shell,删除最后一个“.”以及右侧的所有字符。

还有一种直接替换,${i/.sh/.shell/},不过如果文件名中如果还含有“.sh”会出问题,因为他只替换第一个找到的字串,所以不精确。

因为此题后缀替换前后有特殊性,还可以这样写:${i}ell。

方法2:

#!/bin/bash

str=`find ./ -name "*.sh"` # 会产生一个列表

str=`find ./ -name \*.sh`  # 会产生一个列表

file=" $str "   # 需要在列表前后加空格,在shell中,列表或数组的括号前后必须是空格

for i in $file

do

mv $i $( echo $i | sed 's#.sh$#.shell#g' )

done

此方法主要是用了sed命令,原理跟${i/sh/shell/}类似,只不过它指明了替换结尾的字串,能精确匹配要求。

shell小技巧(6)修改一批文件后缀的更多相关文章

  1. SpringBoot小技巧:修改java可执行jar包内容

    SpringBoot小技巧:修改java可执行jar包内容 情景描述 在生产环境中,有时候我们发现了个小bug,开发迅速修改代码后,很多时候我们不得不重新发布一个新的可执行jar包上去替换掉.但是这样 ...

  2. Shell 小技巧

    Shell 小技巧 ${} 的使用 截断变量 去掉左边 使用 # (最短匹配)或 ## (最长匹配)方法为 ${var#<模式>} var=DUMMY echo ${var#*M} # M ...

  3. Mac 苹果OS X小技巧:如何更改文件的默认打开方式

    OS X小技巧:如何更改文件的默认打开方式 1.command + i 打开简介 2.选择合适的软件打开方式 3.选择全部更改 如图: 转自:http://digi.tech.qq.com/a/201 ...

  4. 6条shell小技巧,让脚本显得不再业余【转】

    如何能让自己的shell显得不那么业余?下面6点实践一定有用. 画外音:本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析. 一.以下面的语句开场 set -o noun ...

  5. vue小技巧之偷懒的文件路径——减少不必要的代码

    众所周知,我们写vue项目的时候都会创建很多个文件,尤其是一些中大型项目,会有很深的文件夹,当你去引入的时候,要写很长的路径比如我要引入一个css文件, 必须得 import  '../../../s ...

  6. css的一些小技巧。修改input样式

    在第一次正式写项目的时候,遇到了几个布局的小技巧.记录一下. 我们常常会遇到图片和文字对齐的一种样式.比如 这样的样式,我们写的时候有时候会出现不对齐的情况.我们有俩种方法 一种就是flex的布局,还 ...

  7. 小兴趣:修改Hosts文件,禁止访问指定网页

    不知道Hosts文件什么鬼的朋友可以在网上搜索一下(大牛勿喷- -) 访问网址时,先查询本地的Hosts文件,那么如果我们将Hosts文件中的网址与IP的映射修改之后,将访问错误的IP. 如在文件尾追 ...

  8. shell小技巧(3)复制文件到其他主机

    复制一个文件nfsclient.sh到主机172.18.117.162的/tmp目录下 scp -P22 /tmp/nfsclient.sh  root@172.18.117.162:/tmp -P2 ...

  9. shell小技巧(2)查找文件时,排除几种类型文件

    代码: find -type f ! -name "*.jpg" ! -name "*.png" ! -name "*.jpeg" ! -n ...

随机推荐

  1. 【JavaScript】windows.open用法详解

    windows.open("URL","窗口名称","窗口外观设定");的用法详解 function onNewWindows(redire ...

  2. springboot多环境部署(profile多环境支持)

    springboot多环境部署(profile多环境支持) 背景   项目开发过程中会有开发环境(dev),测试环境(test)和生产环境(prod),不同的环境需要配置不同的配置,profile提供 ...

  3. Vue 如何优雅的根据条件动态显示组件

    常规情况下,在里动态加载不同组件的方式为: <template> <!-- 符合条件A,加载组件A --> <BusinessComponentA v-if=" ...

  4. Vue Slots

    子组件vue <template> <div> <slot v-if="slots.header" name="header"&g ...

  5. 一、常用的Dos命令

    # 查看目录下所有文件 dir # 切换目录 cd cd .. //返回上一级 # 清理屏幕 cls # 查询电脑ip地址 ipconfig # 退出终端 exit # 创建文件夹 md test # ...

  6. Mybatis-04-分页

    分页 思考:为什么要分页? 减少数据的处理量 1 使用limit分页 select * from user limit startIndex,pageSize;

  7. 报错:无效的列类型: 1111;must be specified for all nullable parameters.

    org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers ...

  8. MetadataCache更新

    MetadataCache什么时候更新 updateCache方法用来更新缓存的. 发起线程 controller-event-thread controller选举的时候 CLASS_NAME ME ...

  9. Windows server 2008R2 中sql server的搭建

    一.安装sql server Step1:下载sql server 2008 r2 standard,解压到Windows的C:\下. Step2:打开安装程序,进行sql server的安装 Ste ...

  10. docker简记

    title: docker学习简记 date: 2019-10-16 15:10:39 tags: docker Docker简记 1:Docker简介 1)出现背景 一款产品从开发到上线,从操作系统 ...