思路:
1、如何输入要处理的目录(要进行文件修改的目录),如果不输入目录会报错退出,如果输入的目录格式不同会执行不同操作
2、如何批量处理
3、如何按照要求修改文件名
4、如何批量按照要求修改文件名
5、如何定义不同操作,包括进入目标目录,按照要求修改文件名
6、汇总脚本
下面一层层来解决
1)如何输入要处理的目录(要进行创建文件的目录),如果不输入目录会报错退出,如果输入的目录格式不同会执行不同操作
# 指定输入的目录方式为位置参数,同时如果不输入位置参数会报错退出
[ $# -ne 1 ] && { echo "Usage:$(basename $0) needs one argument.";exit 1; }
dir=$1
# 根据不同目录格式,执行不同的函数操作
[[ ! $dir == /* ]] && { Dir=/${dir};changefile1; } || { changefile2; }
- 如何批量处理
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
...
done
-
如何按照要求修改文件名
mv ${i}_oldboy.html ${i}_oldgirl.HTML
ps:这里的$i就是第2步中的i -
如何批量按照要求修改文件名
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
mv ${i}_oldboy.html ${i}_oldgirl.HTML
done
- 如何定义不同操作,包括进入目标目录,按照要求修改文件名
操作1
# 进入目标目录
cd $dir
# 批量修改文件名
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
mv ${i}_oldboy.html ${i}_oldgirl.HTML
done
操作2
# 进入目标目录
cd $Dir
# 批量修改文件名
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
mv ${i}_oldboy.html ${i}_oldgirl.HTML
done
6)汇总脚本
#!/bin/bash
changefile1 () {
cd $Dir
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
mv ${i}_oldboy.html ${i}_oldgirl.HTML
done
}
changefile2 () {
cd $dir
for i in $(ls -l | awk '{print $9}' | awk -F '_' '{print $1}' | egrep -v '#|^$')
do
mv ${i}_oldboy.html ${i}_oldgirl.HTML
done
}
[ $# -ne 1 ] && { echo "Usage:$(basename $0) needs one argument.";exit 1; }
dir=$1
[[ ! $dir == /* ]] && { Dir="/${dir}";changefile1; } || { changefile2; }