首页 > 系统相关 >linux下批量修改文件名

linux下批量修改文件名

时间:2023-01-30 16:13:14浏览次数:48  
标签:批量 文件名 -- root jpg stu _. linux 102999

linux下批量修改文件名

  • 源自老男孩教育分享案例,内容做部分精简,自用

准备测试数据

mkdir /opt/tools 
cd /opt/tools 
touch stu_102999_1_finished.jpg 
touch stu_102999_2_finished.jpg 
touch stu_102999_3_finished.jpg 
touch stu_102999_4_finished.jpg 
touch stu_102999_5_finished.jpg 
[root@zuiyoujie tools]# ll
total 4
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_5_finished.jpg

修改后的效果

[root@zuiyoujie tools]# ll
total 4
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_1_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_2_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_3_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_4_.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_5_.jpg

方法1:shell脚本for循环结合sed实现

[root@zuiyoujie tools]# cat rename_files01.sh
#!/bin/sh
for file in `ls ./*.jpg`  
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
do
mv $file `echo $file|sed 's/finished//g'` 
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
done

方法2:shell脚本for循环加变量的部分截取方法

[root@zuiyoujie tools]#cat rename_files02.sh 
#!/bin/sh
# zuiyoujie QQ:31333741
for file in `ls ./*.jpg` 
 do 
/bin/mv $file `echo "${file%finished*}.jpg"`  #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
done 

方法3:ls结合awk实现

[root@zuiyoujie tools]# ls |awk -F 'finished' '{print  $0}'
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
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print  $1}'
stu_102999_1_
stu_102999_2_
stu_102999_3_
stu_102999_4_
stu_102999_5_
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print  $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print  $1$2}'
stu_102999_1_.jpg
stu_102999_2_.jpg
stu_102999_3_.jpg
stu_102999_4_.jpg
stu_102999_5_.jpg
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_.jpg

方法4:通过专业的改名命令rename实现

[root@zuiyoujie tools]# rename "finished" ""  *
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.jpg

拓展:改扩展名的方法

[root@zuiyoujie tools]# rename .jpg .tt *
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.tt

10.参考地址

https://blog.51cto.com/oldboy/711342

标签:批量,文件名,--,root,jpg,stu,_.,linux,102999
From: https://www.cnblogs.com/tssc/p/17076311.html

相关文章

  • linux ACL权限简单使用
    ACL适用场景:Linux中acl权限全称为accesscontrollist(访问控制列表).acl的作用:除我们熟知的rwx权限以外的,用于单独指定某个用户/用户组的特定访问权限. 用途:可以用......
  • Linux 文件的解压缩
    解压缩:压缩文件:gzipaaa解压文件:gunzipaaagzip-daaa注意:只能压缩文件,不能压缩文件夹,不保留原文件压缩文件:tar-zcfaaa.tar.gzaaa说明:z打包同时压缩,c打包,f指......
  • VMware安装Rocky Linux8服务器系统并执行优化,包括修改安装镜像源、ssh免密等等
    1、https://blog.csdn.net/DCTANT/article/details/125430461?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-125430......
  • .NET 批量替换关键字
    最近nfx462的项目升级.NET6需要批量替换Ilogger为Ilogger<类名>vs自带的搜索替换其正则表达式好像只能匹配一行,直接扫描文件替换吧//Seehttps://aka.ms/new-console-te......
  • Linux 硬盘分区管理:fdisk、sfdisk、sgdisk
    fdisk不必多言。sfdisk参考:管理磁盘分区的Linuxsfdisk命令示例sgdisk参考:使用sgdisk管理分区......
  • Linux profile、bashrc、bash_profile
    一、profile文件1、profile文件的作用profile(/etc/profile),用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。当用户登录(login)时,文件会被执行......
  • SELinux 开启和关闭
    1.查看SELinux状态1.1getenforcegetenforce 命令是单词get(获取)和enforce(执行)连写,可查看selinux状态,与setenforce命令相反。setenforce 命令则是单词set(设置)和en......
  • 在 linux 中 find 和grep 的区别?
    Linux 系统中grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep 全称是GlobalRegularExpressionPrint,表示全局正则表达式......
  • linux 操作命令大全
    mysql授权远程访问1.进入cd/usr/local/mysql/bin下执行./mysql-uroot-pInfosec@2020 (-p后面是数据库密码)2.usemysql;3.updateusersethost='%'where......
  • Dynamics 365 视图界面,通过分隔符实现批量查询数据(已知编号数组,直接复制到视图可以直
    效果:  源码实现:publicclasstest_RetrieveMultiple_pre:IPlugin{publicvoidExecute(IServiceProviderserviceProvider){//上下文......