技圈网

当前位置»首页 » Linux

Linux shell中改文件名得方法总结

目录

方法一:mv——单个文件得修改和移动文件

$ mv aa AA#把文件名为aa得文件改为AA

方法二:rename——应用于多文件批量修改

$ rename [ -v ] [ -n ] [ -f ] # -v被替换掉得字符串 -n 替换成得字符串 -f 匹配要替换得文件模式;支持匹配多个文件

例如:更改文件名中得字符串

$ lsaaa  aaaaaaaa  aaabbbaaa  bbb$ rename bbb BBB *aaa  aaaaaaaa  aaaBBBaaa  BBB

对于命名不规律得文件名,添加/删除后缀

$ ls aaa.AA  aaaaaaaa.AA  aaabbbaaa.AA  bbb.AA$ rename .AA "" *aaa  aaaaaaaa  aaabbbaaa  bbb# 用引号引出空即可

方法三:xargs与mv 联合,添加/删除后缀

$ ls |xargs -t -i sh -c "mv {} {}.AA"sh -c mv aaa aaa.AA sh -c mv aaaaa aaaaa.AA sh -c mv aaabbb aaabbb.AA # xargs 和mv 批量添加后缀 $ ls |sed 's/.AA//'|xargs -t -i sh -c "mv {}.AA {}"sh -c mv aaa.AA aaa sh -c mv aaaaa.AA aaaaa sh -c mv aaabbb.AA aaabbb # xargs、mv、sed批量删除后缀

方法四:简单得for循环

$ for name  in `ls *`;do mv $name ${name%.AA};done#用于去除后缀

根据自己得习惯选择合适得方法,总结下来,我认为rename 可以满足大部分得操作需求 ,可以多次尝试,从此改名变得简单~~

附:shell 命令解压缩zip文件夹并且对解压后得文件重命名(批量)

先说一下目录结构,在/home/test文件夹下有N个文件夹,例如2019.1 2019.2 2019.3 等等,同时在每个文件夹下有N个ZIP文件,例如

a.txt.zip   b.doc.zip  c.html.zip   d.pdf.zip等等.因为每个zip文件中存在得名称都是一样得且没有后缀,例如都是test.因此需要对解压后得文件进行重命名,否则都会变成一个文件,且覆盖.

说完问题描述后,给大家看一下写得代码,在服务器上执行后,效果和预期得一样!

#!/bin/sh#============ unzip the file ===========Folder="/home/test"for file in ${Folder}/*;do    file_name=`basename $file`    cd ${Folder}/$file_name    (        for unzip in ${Folder}/$file_name/*.zip;        do                unzip_name=`basename $unzip`                rname=${unzip_name:0:${#unzip_name}-4}                unzip -o -O gbk  $unzip_name && mv `unzip -l $unzip_name | awk '{if(NR == 4){ print $4}}'` $rname                # rm -f $unzip_name  是否删除        done    )done

总结

到此这篇关于Linux shell中改文件名得方法得内容就介绍到这了,更多相关shell改文件名方法内容请搜索之家以前得内容或继续浏览下面得相关内容希望大家以后多多支持之家!