ubuntu shell脚本 .sh文件 遍历文件夹 按顺序重命名文件

这篇博客介绍了如何在Ubuntu系统中使用Shell脚本实现两个功能:一是提取文件夹及其子文件夹内的文件名称到txt文件,二是按照标号重命名单层文件夹内的文件。内容涵盖了find命令的使用以及重命名文件的脚本编写技巧,包括注意事项和相关参考资料。

目的1:提取文件夹名称到txt文件

(包括文件夹内文件名称,遍历所有文件夹及子文件夹)

find -name \*> viewname.txt

(单层文件夹)

Folder_A="/home/Neo/shell/gotfilename/bin"    
Output_file="output.txt"    
#这里用于清空原本的输出文件  
: > $Output_file                                                                                                                                              
for file in ${Folder_A}/*  
do     
    echo $file>> $Output_file    
done

(不包括文件夹内文件名称)

find -type d -name \*> name.txt

使用find时提示: 路径必须在表达式之前 :

如果目标文件开头用通配符'*'表示,则需转义。'*'前加'\'即可。

                                参考:https://blog.youkuaiyun.com/u011068838/article/details/14002561


目的2:按照标号重命名文件

仅包含1层文件夹内文件

i=1; 
for x in *; 
do mv $x $i.png; 
let i=i+1; 
done

遍历文件夹

此处参考

shell脚本函数编写方法:https://www.cnblogs.com/-beyond/p/8280208.html

递归目录并修改文件名:https://blog.youkuaiyun.com/keheinash/article/details/51863587

代码:

#!bin/sh
i=1;

function travFolder(){ 
    #echo "travFolder"
    flist=`ls $1`
    cd $1
    #echo $flist
    for f in $flist
    do
        if test -d $f
        then
            #echo "dir:$f"
            travFolder $f
        else
            #echo "file:$f"
		echo ${f##*.}
		if [ "${f##*.}"x == "bmp"x ]
		then
		    mv $f $i.bmp;
		    let i=i+1;
		fi
        fi

    done
    cd ../ 
}

travFolder ./
其中
if [ "${f##*.}"x == "bmp"x ]
是判断其后缀名注意的几点:

1、if和[ ]之间要空格。

2、[ ]和“ ”之间要空格

3、“ ”和=之间要空格,

否则都会报错


运行脚本

chmod +x changename.sh

./changename.sh


一些脚本注意事项: 第一行要空一行,否则会提示文件不存在之类的问题

当前运行运行的文件路径一定要注意。cd ../ 返回上层路径。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值