方法一:mv——单个文件的修改和移动文件
$ mv aa AA #把文件名为aa的文件改为AA
方法二:rename——应用于多文件批量修改
$ rename [ -v ] [ -n ] [ -f ] # -v被替换掉的字符串 -n 替换成的字符串 -f 匹配要替换的文件模式;支持匹配多个文件
例如:更改文件名中的字符串
$ ls aaa 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
总结
版权声明:除特别声明外,本站所有文章皆是本站原创,转载请以超链接形式注明出处!