shell 批量文件改名

[[email protected] 1]# cat mv.sh 
#!/bin/bash

for file in `ls *.jpg`
do
     /bin/mv $file `echo "${file%finished*}.jpg"`
done

[[email protected] 1]# ll
total 8
-rw-r--r-- 1 root root 106 Dec 26 05:33 a.log
-rw-r--r-- 1 root root  90 Dec 26 05:39 mv.sh
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_4_finished.jpg
[[email protected] 1]# sh mv.sh 
[[email protected] 1]# ll
total 8
-rw-r--r-- 1 root root 106 Dec 26 05:33 a.log
-rw-r--r-- 1 root root  90 Dec 26 05:39 mv.sh
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_1_.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_2_.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_3_.jpg
-rw-r--r-- 1 root root   0 Dec 26 05:34 stu_102999_4_.jpg

思路:

[[email protected] 1]# k="stu_102999_1_finished.jpg"

[[email protected] 1]# echo ${k%finished*}.jpg

stu_102999_1_.jpg

2、用${string/%substring/replace} 修改扩展名

[[email protected] 201126_02]# ls
1.log  1.sh  camz.HTML  icpc.HTML  leco.HTML  wjb.HTML  zshu.HTML

将后缀为HTML改为TH

[[email protected] 201126_02]# vim 1.sh

#!/bin/bash

for f in `ls *.HTML`
do
        mv $f `echo ${f/%HTML/TH}`
done

[[email protected] 201126_02]# sh -x 1.sh
++ ls camz.HTML icpc.HTML leco.HTML wjb.HTML zshu.HTML
+ for f in ‘`ls *.HTML`‘
++ echo camz.TH
+ mv camz.HTML camz.TH
+ for f in ‘`ls *.HTML`‘
++ echo icpc.TH
+ mv icpc.HTML icpc.TH
+ for f in ‘`ls *.HTML`‘
++ echo leco.TH
+ mv leco.HTML leco.TH
+ for f in ‘`ls *.HTML`‘
++ echo wjb.TH
+ mv wjb.HTML wjb.TH
+ for f in ‘`ls *.HTML`‘
++ echo zshu.TH
+ mv zshu.HTML zshu.TH
[[email protected] 201126_02]# ls
1.log  1.sh  camz.TH  icpc.TH  leco.TH  wjb.TH  zshu.TH

时间: 2024-10-07 12:09:53

shell 批量文件改名的相关文章

shell 实现文件改名

修改文件名可以有不同的命令方式,比如rename, mv都可以实现 对于单个的文件,可以直接使用以上的命令,那如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢? 比如某次测试后,保存的文件为 Lan1.txt, Lan2.txt,....Lan100.txt 这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个...多痛苦啊 当前文件夹下,文件修改有4种方式 1. 使用while Loop加 ${//}来实现Lan到 ch7_Lan的替换 点击

shell 批量压缩指定文件夹及子文件夹内图片

shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理. 代码例如以下: #!/bin/bash # 查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理 # Config folderPath='/home/fdipzone/photo' # 图片文件夹路径 maxSize='1M' # 图片尺寸同意值 max

批量文件编码格式转化

前言 前段时间帮别人调试程序,在windows下能正常显示的输出,在linux下输出的全是乱码?后来发现windows默认的文件编码而是GB2312,而linux下的文件默认是utf-8,所以导致了这个问题.另一个问题就是用source insight看源码的问题,对windows下的文本文件都能看的中文源码注释,在si中居然是乱码,后来发现si居然不支持utf-8,一个这么通用的utf-8它居然不支持,这真是让si这个看代码神奇大打折扣了.今天遇到个问题就是如果我用si编写中午注释,然后将源文

Mac / Linux Shell 批量重命名的方法总览

Linux Shell 批量重命名的方法总览 0.用类似 GPRename 这样的图形软件进行批量重命名 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 2.把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/' *.jpe 3.把所有文件的文件名改为小写: rename 'y/A-Z/a-z/' * 4.将 abcd.jpg 重命名为 abcd_efg.jpg: for var in *.jpg; do mv "$var

烂泥:学习tomcat之通过shell批量管理多个tomcat

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使用tomcat做web容器,为了更有效的利用服务器的性能,我们一般部署多个tomcat做业务的负载均衡. 一.业务需求 目前一台服务器上,部署了4个tomcat,也就相当于4个节点.平时在维护业务时,需要我们一个一个tomcat实例进行单独的维护,感觉很不方便,所以就有了这篇文章. 但是为了更方便的管理这4个tomcat,我这边做了两方面的工作,一是把所有的tomcat工

ssh免密验证,shell批量设置

#!/bin/sh #ssh免密验证,shell批量设置# . /etc/init.d/functions [[ -f /usr/bin/expect ]] || { echo " install expect ...";yum install expect -y >/dev/null 2>&1; } #若没expect则安装# [ $? = 0 ] || { echo "expect安装失败";exit; } #安装失败则退出# PUB=/$H

shell 批量重命名

shell 批量重命名 1.把文件名的第一字母批量改成a 方法一: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [[email protected] test]# ll total 0 -rw-r--r-- 1 root root 0 Apr 14 15:02 8801.txt -rw-r--r-- 1 root root 0 Apr 14 15:02 8802.txt -rw-r--r-- 1 root root 0

android批量文件上传(android批量图片上传)

项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功: 1.android客户端+springMVC服务端:服务端采用org.springframework.web.multipart.MultipartHttpServletRequest作为批量上传接收类,这种搭配下的批量文件上传会失败,最终服务端只会接受到一个文件,即只会接受到第一个文件.可能因为MultipartHttpServletRequest对serv

struts2学习笔记--上传单个和批量文件示例

struts2提供了对上传文件的支持,将上传后的文件封装为java.io.File对象,开发者只需要在Action中定义一个File类型的变量,然后直接使用该变量,将它复制到目的目录即可. 单个文件上传实例 ` 下面是一个单个文件上传的小例子,webRoot下新建一个upLoad.jsp,核心代码为: <body> <!-- 必须将method指定为post,同时将enctype属性设置成如下形式, 第一个input中的name属性,值必须与Action中定义的Fil类型的变量名相同 -