`

批量重命名的一个shell脚本,当前目录及其所有子目录------依然繁琐

阅读更多

这是在上一篇脚本之上的改进,可以支持目录及其所有子目录中的文本文件重命名,亦为练习之作。Ubuntu 8.04.4上测试通过。

#!/bin/bash
# Rename_AllChildrenDirectories.sh
# 问题描述:
# 某目录及其子目录中出现一些以“;1”结尾的文本文件名,编写shell脚本,
# 以去除这个目录及其子目录中所有该类文件名中结尾部分的“;1”。

# COUNT用于计数,错误输入的情况下,默认为允许3次尝试。
COUNT=0
while [ $COUNT -lt 3 ]
do
	echo  "请输入要重命名的文件所在父目录的路径:"
	read PATH

	if [ -d $PATH ]
	then
		cd $PATH
		# NUM代表符合条件的、可重命名的文件数。
		NUM=`/usr/bin/find $PATH -type f|/bin/grep .*\;1$|/usr/bin/wc -l`
		echo "在这个目录及其子目录中需要重命名的文件有:$NUM 个"

		# 如果NUM为0,说明无需重命名操作,退出。
		if [ $NUM -eq 0 ]
		then
			echo "无需重命名,退出。"
			exit
		fi

		# 列出符合条件的、要重命名的文件,并进行重命名操作。
		for loop in `/usr/bin/find $PATH -type f|/bin/grep .*\;1$|/usr/bin/sort`
		do
			echo $loop
			# 进行重命名操作,错误信息输出到/tmp目录下以该程序名开头的“_error.log”文件中
			/bin/mv $loop `echo -n $loop | /bin/sed 's/\;1//'` 2>/tmp/`/usr/bin/basename $0`_error.log
		done

		echo "重命名完成!"
		
		TOTAL=`/usr/bin/find $PATH -type f|/usr/bin/wc -l`
		echo "在这个目录及其子目录中的普通文件有:$TOTAL 个"
		/usr/bin/find $PATH -type f|/usr/bin/sort

		exit
	else # 输入的路径并非代表目录。
		if (($COUNT<2))
		then
			echo "输入的路径错误,请确认后输入。"	
		else
			echo "尝试次数过多,退出。"
		fi
	fi
	
	# 计数器COUNT加1。
	COUNT=$[$COUNT+1]
done

 

实验环境:Ubuntu 8.04.4    Bash

联系方式:qq_81064483, emial_AllenNewOK@126.com

本文遵循GNU协议,不足之处,敬请指出,谢谢

 

 

分享到:
评论
4 楼 AllenNewOk 2011-02-15  
william_ai 写道
这样写更简洁(txt->sh):
find . -name "*.txt"|awk 'BEGIN{FS="txt"}{print "mv " $0 " " $1"sh"}'|sh


谢谢关注,受教了!
3 楼 AllenNewOk 2011-02-15  
lynnlni 写道
搞那么多……
我更喜欢One Line脚本。

/software/tomcat/wulin/test% ls -al
总数 0
drwxr-xr-x   2 tomcat     Aigrp           96 2月15日 10:45 .
drwxr-xr-x   5 tomcat     Aigrp           96 2月15日 10:40 ..
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 1;1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 2;1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 3;1
/software/tomcat/wulin/test% find . -type f -name '*\;1' |sed s/'\;1'//g|awk '{print "mv \""$1";1\" "$1}'|sh
/software/tomcat/wulin/test% ls -al
总数 0
drwxr-xr-x   2 tomcat     Aigrp           96 2月15日 10:46 .
drwxr-xr-x   5 tomcat     Aigrp           96 2月15日 10:40 ..
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 2
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 3
/software/tomcat/wulin/test%





谢谢关注,我也喜欢简洁的,只是还没您那么熟练。学习学习!
2 楼 william_ai 2011-02-15  
这样写更简洁(txt->sh):
find . -name "*.txt"|awk 'BEGIN{FS="txt"}{print "mv " $0 " " $1"sh"}'|sh
1 楼 lynnlni 2011-02-15  
搞那么多……
我更喜欢One Line脚本。

/software/tomcat/wulin/test% ls -al
总数 0
drwxr-xr-x   2 tomcat     Aigrp           96 2月15日 10:45 .
drwxr-xr-x   5 tomcat     Aigrp           96 2月15日 10:40 ..
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 1;1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 2;1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 3;1
/software/tomcat/wulin/test% find . -type f -name '*\;1' |sed s/'\;1'//g|awk '{print "mv \""$1";1\" "$1}'|sh
/software/tomcat/wulin/test% ls -al
总数 0
drwxr-xr-x   2 tomcat     Aigrp           96 2月15日 10:46 .
drwxr-xr-x   5 tomcat     Aigrp           96 2月15日 10:40 ..
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 1
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 2
-rw-r--r--   1 tomcat     Aigrp            0 2月15日 10:45 3
/software/tomcat/wulin/test%



相关推荐

    win10批量重命名的去除括号脚本.bat

    win10批量重命名步骤:1、在当前文件夹下,全选所有要重命名的文件,2、按F2按键,对一个文件重命名,再enter,其他所有文件都会重命名,但是会是“前缀”(1)“后缀”,“前缀”(2)“后缀”,“前缀”(3)...

    批量重命名文件数字前缀脚本(数字自动递增)

    今天在整理BD云文件夹的时候发现PanDownload的批量重命名没有这个功能,于是就自己lu了一个。 效果展示: 使用教程: ① 将脚本copy到PanDownload安装目录下PanData\script\default ② 重启PanDownload ③ ...

    文件批量重命名_按键精灵文件批量重命名_

    在描述中提到的“按键精灵脚本,用来文件批量重命名”,这意味着可能的脚本逻辑是这样的:首先,脚本会获取指定目录下的所有文件名,这可以通过系统API或者文件操作函数实现;然后,根据预设的规则(如增加序列号、...

    批量重命名图片名123……bat文件

    下面是一个简单的示例,它将当前目录下的所有.jpg图片重命名为1.jpg、2.jpg、3.jpg等。 打开文本编辑器(如记事本)。 复制并粘贴以下代码: batch @echo off setlocal enabledelayedexpansion set "count=1" for...

    MAYA批量重命名小工具.zip

    3. 脚本会弹出一个窗口,展示当前场景中的所有可重命名对象,包括骨骼。 4. 选择合适的重命名模式,输入相应的参数,例如起始编号、前缀或后缀文字。 5. 点击“应用”或“全部应用”按钮,即可一次性完成所有选定...

    文件批量重命名脚本

    自写,很简单也好用,用于批量重命名文件,可以试一下,也可以记事本打开自己修改代码

    批量重命名小软件------

    批量重命名小软件,vb编写的,----------------------------------------------

    Windows下用脚本批量重命名文件

    Windows下用脚本批量重命名文件 O(∩_∩)O哈哈~ Windows下用脚本批量重命名文件

    maya物体批量重命名py脚本

    自己写的。哈哈哈哈。第一个python练手器,使用了python.

    good-idea批量重命名工具master-10.0.zip

    《good_idea批量重命名工具master-10.0.zip》是一个专为IT专业人士设计的实用工具,主要用于解决日常工作中常见的文件批量重命名问题。在处理大量文件时,手动逐一重命名不仅耗时且易出错,而"good_idea"工具的出现...

    批量随机重命名,批量重命名bat文件

    以下是一个基本的批处理脚本示例,用于实现批量随机重命名: ```batch @echo off setlocal enabledelayedexpansion set /a count=1 for %%i in (*) do ( set /a random=!random!%%10000 ren "%%i" "!count!_!...

    BAT批处理脚本-批量重命名.zip

    在这个名为"BAT批处理脚本-批量重命名.zip"的压缩包中,包含了一个名为"批量重命名.bat"的文件,这显然是一种用于批量重命名文件的批处理脚本。 批处理脚本的基本结构通常包括DOS命令,如`@echo off`用于关闭命令...

    批量重命名

    - 整理归档:在项目结束后,需要将所有相关文件按类别或编号进行整理,批量重命名可实现快速分类。 - 数据备份:在备份数据时,为了避免原文件名冲突,可能会对备份文件进行重命名。 3. **批量重命名的方法**: - *...

    文件批量重命名工具.zip

    对于视频文件、图片文件以及文件夹这样的多媒体资源,手动重命名会非常耗时且容易出错,因此批量重命名工具成为了一个必备的工具。 金舟文件批量重命名软件是一款专门用于文件和文件夹批量改名的工具,它具有以下...

    批量重命名方法_批量重命名_

    批量重命名能够大大提高工作效率,避免手动一个一个修改的繁琐过程。本篇文章将详细探讨三种批量重命名的方法,旨在帮助用户更高效地管理自己的文件。 1. 文件管理器的批量重命名功能 大多数操作系统都内置了批量...

    arcmap-模型构造器要素图层批量重命名

    arcmap-模型构造器要素图层批量重命名

    图片批量重命名方法(bat命令).docx

    保存关闭该文件,然后双击运行该文件,这将生成一个名称为filetree的Excel文件,该文件中包含了当前图片文件夹中所有文件的名称。 二、使用Excel快速重命名 创建一个Excel文件,目的在于方便我们在Excel文件中批量...

    图像批量重命名

    这个过程主要是为了方便管理和查找大量的图像文件,特别是在一个大型的图像库中。以下是对这个主题的详细解释: 批量重命名图像是一种高效的方法,可以一次性更改多个图像文件的文件名,而不是逐个手动更改。这在你...

    优速文件批量重命名,批量修改文件创建时间,编辑时间

    今天给大家介绍一款工具,“优速文件重命名”,可以让你轻松管理文件夹,让你不会再有杂乱的感觉。批量重命名你的文件夹,让你的文件夹按照统一的命名方式排序! 如果能帮助到你,请点赞收藏哦! 工具软件下载地址...

Global site tag (gtag.js) - Google Analytics