批量重命名脚本
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux shell代码
1.#!/bin/bash
2.# Rename_AllChildrenDirectories.sh
3.# 问题描述:
4.# 某目录及其子目录中出现一些以“;1”结尾的文本文件名,编写shell脚本,
5.# 以去除这个目录及其子目录中所有该类文件名中结尾部分的“;1”。
6.
7.# COUNT用于计数,错误输入的情况下,默认为允许3次尝试。
8.COUNT=0
9.while [ $COUNT -lt 3]
10.do
11.echo "请输入要重命名的文件所在父目录的路径:"
12.read PATH
13.
14.if [ -d $PATH ]
15.then
16.cd $PATH
17.# NUM代表符合条件的、可重命名的文件数。
18.NUM=`/usr/bin/find $PATH -type f|/bin/grep .*\;1$|/usr/bin/wc -
l`
19.echo "在这个目录及其子目录中需要重命名的文件有:$NUM 个"
20.
21.# 如果NUM为0,说明无需重命名操作,退出。
22.if [ $NUM -eq 0]
23.then
24.echo "无需重命名,退出。"
25.exit
26.fi
27.
28.# 列出符合条件的、要重命名的文件,并进行重命名操作。
29.for loop in `/usr/bin/find $PATH -type f|/bin/grep .*\;1$|/us
r/bin/sort`
30.do
31.echo $loop
32.# 进行重命名操作,错误信息输出到/tmp目录下以该程序名开头的
“_error.log”文件中
33./bin/mv $loop `echo -n $loop | /bin/sed 's/\;1//'` 2
>/tmp/`/usr/bin/basename $0`_error.log
34.done
35.
36.echo "重命名完成!"
37.
38.TOTAL=`/usr/bin/find $PATH -type f|/usr/bin/wc -l`
39.echo "在这个目录及其子目录中的普通文件有:$TOTAL 个"
40./usr/bin/find $PATH -type f|/usr/bin/sort
41.
42.exit
43.else # 输入的路径并非代表目录。
44.if (($COUNT<2))
45.then
46.echo "输入的路径错误,请确认后输入。"
47.else
48.echo "尝试次数过多,退出。"
49.fi
50.fi
51.
52.# 计数器COUNT加1。
53.COUNT=$[$COUNT+1]
54.done