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

目的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.csdn.net/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.csdn.net/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 ../ 返回上层路径。

    原文作者:cu_is_me
    原文地址: https://blog.csdn.net/cu_is_me/article/details/80780845
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞