说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

windows下的代码上传至linux服务器上,解决文件后缀名大小写问题

编辑:说三道四文库 发布时间:2018-05-22 11:54
HTML文档下载 WORD文档下载 PDF文档下载
WINDOWS下的大小写不区分,项目工程里很多后缀名有大写,也有小写的,比如*.txt,*.TXT,*.jpg,*.JPG,怎样写一个批处理程序,当上传代码至LINUX服务器时,统一将所有文件的后缀名改为小写?可以给思路,可以给完整实现,谢谢
抢个SF坐坐先
fileList=($(ls));

for((i=0;i<${#fileList[@]};++i))
do
str=${fileList[i]};

#检查是否带后缀
if ! echo "$str" | egrep ".*\..*" ;then
continue;
fi

#提取前缀与后缀,并将后缀转小写
left=${str%.*};
right=`echo ${str#*.} | tr [A-Z] [a-z]`;

#拼接转化后文件名
newName=$left.$right;

#如果转换后和原先文件名相同,则不必重命名
if [ "$newName" = "$str" ];then
continue;
fi

mv ${str} $newName;
done
这个脚本,帮顶下!
应该是用linux的shell脚本写的吧
(在Vim的黑暗中寻找光明~,~) 的脚本缺少了目录部分,lz应该判断是不是目录,写个递归,更改子目录下的文件。
引用 5 楼 zzx902 的回复:
(在Vim的黑暗中寻找光明~,~) 的脚本缺少了目录部分,lz应该判断是不是目录,写个递归,更改子目录下的文件。


额,比较简单。

这样加一句就行了:
#!/bin/bash

fileList=($(ls));
#configure : modify var: shellPath in lower.sh before run it
shellPath=~/lower.sh;

for((i=0;i<${#fileList[@]};++i))
do
    str=${fileList[i]};

if [ -d "$shellPath" ];then
(cd $str;$shellPath;)
fi
    
    #检查是否带后缀
    if ! echo "$str" | egrep ".*\..*" ;then
        continue;
    fi

    #提取前缀与后缀,并将后缀转小写
    left=${str%.*};
    right=`echo ${str#*.} | tr [A-Z] [a-z]`;
    
    #拼接转化后文件名
    newName=$left.$right;

    #如果转换后和原先文件名相同,则不必重命名
    if [ "$newName" = "$str" ];then
        continue;
    fi
    
    mv ${str} $newName;
done





#!/bin/bash

fileList=($(ls));
#configure : modify var: shellPath in lower.sh before run it
shellPath=~/lower.sh;

for((i=0;i<${#fileList[@]};++i))
do
    str=${fileList[i]};

if [ -d "$str" ];then
(cd $str;$shellPath;)
fi
    
    #检查是否带后缀
    if ! echo "$str" | egrep ".*\..*" ;then
        continue;
    fi

    #提取前缀与后缀,并将后缀转小写
    left=${str%.*};
    right=`echo ${str#*.} | tr [A-Z] [a-z]`;
    
    #拼接转化后文件名
    newName=$left.$right;

    #如果转换后和原先文件名相同,则不必重命名
    if [ "$newName" = "$str" ];then
        continue;
    fi
    
    mv ${str} $newName;
done


有个地方写错了。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘