您的位置:首页 > 其它

awk变量,批量更改有规则文件名

2014-01-20 19:42 309 查看
今天做了三个文件。rename1,prefix,suffix。目的是实现批量修改有规则的文件名rename1放在bin中做为命令使用prefix,suffix放在/user/local/中被rename1直接调用rename1文件内容1 #!/bin/sh
2 while [ true ] ;do \*实现循环 *\
3 echo
4 echo
5 echo
6 ls \*列出当前位置文件名方便修改*\
7 echo
8 select choice in "change prefix" "change suffix" \*select语句选择运行方式*\
9 do
10 case $choice in \*根据用户选择执行相应文件*\
11 "change prefix")
12 /usr/local/prefix \*直接输入文件路径运行文件*\
13 break;;
14 "change suffix")
15 /usr/local/suffix
16 break;;
17 *) \*排除用户输入非法字符*\
18 echo "invalid answer";;
19 esac
20 done
21 doneprefix文件内容1 #!/bin/sh
2 echo "which part of the filename you want to change" \*提示用户输入要改的文件名字符串*\
3 read n \*读取要改的文件名字符串*\
4 echo "what to change" \*提示用户要将选中文件字符串改成什么样*\
5 read h \*读取要改成的字符串*\
6 for fname in "$n"* \*查找含有该字符串的文件*\
7 do \*循环逐个文件处理*\
8 if [ -f "$fname" ];then \*判断是否有这个文件存在*\
9 mv "$fname" "$h"${fname##"$n"} \*有就修改此文件名*\
10 echo "\"$fname\" was changed,now is \""$h"${fname##"$n"}\"" \*友好显示*\
11 else
12 echo "\"no such file\"" \*没有显示无此文件*\
13 fi
14 done
15 echo
16 echosuffix文件内容 \*内容大概如上*\#!/bin/sh
2 echo "which part of the filename you want to change"
3 read m
4 echo "what to change"
5 read i
6 for fname in *"$m" \*双引号为了防止变量为非法*符号导致文件全选*\
7 do
8 if [ -f "$fname" ];then \*双引号为防止变量为*符号导致出现算法错误*\
9 mv "$fname" ${fname%%"$m"}"$i" \*双引号为防止变量为*符号导致出现算法错误*\
10 echo "\"$fname\" was changed,now is \"${fname%%"$m"}"$i"\""
11 else
12 echo "\"no such file\""
13 fi
14 done
15 echo
16 echo
学习了awk的批量更改名字方法有文件1aa1 2aa2 3aa3 4aa4 ……要改为1bb1 2bb2 3bb3 4bb4 ……方法为: ls -l *aa* | awk '{m=$9;gsub(/aa/,"bb",$9);print "mv "m" "$9}'|shls -l *aa* 找到中间字符为aa的文件 -l很重要是$9数值的依据m=$9 m为$9原先的值gsub(/aa/,"bb",$9) 将$9中的aa变为bb,此进$9已发生改变print "mv "m" "$9 打印出格式为 mv m $9的文本,其中m和$9为变量,双引号是标识空格用的|sh 将mv m $9 送给bash执行,没有这个之前的只打印不执行
ls -l *aa* | awk '{m=$9;gsub(/aa/,"bb",$9);print "mv "m" "$9}'|sh$9的来源ls -l *aa* 显示格式如下-rw-r--r--. 1 root root 0 Nov 18 08:42 1aa1$1: -rw-r--r--.$2: 1$3: root$4: root$5: 0$6: Nov$7: 18$8: 08:42$9: 1aa1所以这里选择$9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: