shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符)

上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符;

举例如下:批量改名,删除文件名中多余字符

目录下文件名为如下,要求去掉_finished。

stu_102999_1_finished.jpg

stu_102999_2_finished.jpg

stu_102999_3_finished.jpg

stu_102999_4_finished.jpg

stu_102999_5_finished.jpg

可以实现的方法有很多种:

方法一:for循环结合sed替换

[[email protected] ~]$ for file in `ls *.jpg`;do mv $file `echo $file|sed ‘s/_finished//g‘`;done;

方法二:ls结合awk,输出交给bash执行

[[email protected] ~]$ ls *.jpg |awk -F "_finished" ‘{print "mv "$0" "$1$2""}‘|bash

实际执行的命令如下,以_finished作为分隔符,mv及变量 需要加双引号

[[email protected] ~]$ ls *.jpg |awk -F "_finished" ‘{print "mv "$0" "$1$2""}‘
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg


方法三:rename改名

[[email protected] ~]$ rename "_finished" "" *.jpg

方法四:for循环加变量部分截取

[[email protected] ~]$ for file in `ls *.jpg`;do mv $file `echo ${file%_finished*}.jpg`;done;

不使用echo也可以实现

[[email protected] ~]$ for file in `ls *.jpg`;do mv $file ${file%_finished*}.jpg;done;

更改后结果如下:

stu_102999_1.jpg
stu_102999_2.jpg
stu_102999_3.jpg
stu_102999_4.jpg
stu_102999_5.jpg

时间: 2024-12-15 01:33:50

shell脚本:批量修改文件名(删除文件名中字符)的相关文章

Linux系统编写shell脚本批量创建和删除用户

一.编写shell脚本批量添加用户 实现方法:判断用户是否存在,存在则返回错误提示,同时判断用户文件是否存在,不存在则退出 1.创建添加用户脚本 [[email protected] ~]# vim useradd.sh #!/bin/bashif [ $# -eq 0 ];then        echo "你没有输入任何文件!"        exit 1fi if [ ! -f $1 ];then        echo "输入有误!"        exit

利用shell脚本批量修改表

最近公司里因为开发新功能,程序员需要快速在某一个库里的所有表添加字段,于是就用shell脚本简单快速实现批量修改表添加字段 #!/bin/bash export mysql_bin=/usr/local/mysql/bin export database=database export tables=`$mysql_bin/mysql -Bse "use ${database};show tables;"` for i in ${tables}         do          

shell 脚本 批量修改文件名

修改文件名前 #!/bin/bask # for a in $( ls /etc/yum.repos.d/CentOS* );do if [ $a != '/etc/yum.repos.d/CentOS-Media.repo' ];then #CentOS-Media.repo的文件名不修改 mv $a $a.bak #给文件加上后缀 .bak fi done 测试: 删除文件后缀 .bak#!/bin/bask # for a in $( ls /etc/yum.repos.d/Cent* )

Shell脚本批量修改文件编码为UTF-8

主要使用iconv cat b |while read line do iconv -f gbk -t utf8 $line > a [[ $? -ne 0 ]] && { echo $line } mv a $line done b文件中存放着需要修改的文件路径 可多个文件路径,每行一条路径 原文地址:https://www.cnblogs.com/hkgov/p/12573846.html

利用Shell脚本批量修改文件后缀名

在MDN下载了一个插件开发示例,几十个文件都被加上多余的.txt后缀名,写了个简单脚本,几行代码轻松解决了这个问题. 1 #!/bin/sh 2 3 for file in *.txt 4 do 5 mv $file `basename $file .txt` 6 done

linux shell脚本批量修改密码,无需交互输入

#!/usr/bin/env bash count=1for n in `cat /root/user.txt`do    count+=1    useradd $n    echo 'aaaa' | passwd --stdin $n    done user.txt aaa bbb ccc

python批量修改指定目录文件名

这小例子只要是说明用python怎么批量修改指定目录的文件名: 记得要把脚本跟修改的文件放在同一个目录下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径可以自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt可以自己手动修改成你想改的文件名 newname = a[0]+'.py' #.py也是可以修改 print

Python批量修改一个目录文件名

#!/usr/bin/env python # -*- coding:utf-8 -*- import re  import os import time # str.split(string) 分割字符串 # '连接符'.join(list) 将列表组成字符串 def change_name(path): global i if not os.path.isdir(path) and not os.path.isfile(path): return False if os.path.isfil

Shell脚本批量创建用户并随机生成密码

要求:批量创建10个系统账号oldboy01-oldboy10,并设置生成密码(密码不同). 实现脚本: #!/bin/bash #Question3 for i in $(seq -w 10) do         useradd -s /bin/bash oldboy$i         echo "password$i" | md5sum | tee -a passwd.txt | passwd --stdin  oldboy$i done 脚本执行效果: [[email pro