找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2259|回复: 0

Linux中批量把目录内文件名转换大小写用tr

  [复制链接]
发表于 2014-1-23 21:30:15 | 显示全部楼层 |阅读模式 来自 四川省成都市

如何将一个目录中所有文件名由大写变为小写
我们以目录 tmp 为例
1. 进入 tmp 目录的上一级目录
2. zip -r tmp.zip tmp/*
3. mv tmp tmp-old (这是为了安全起见,此处也可改为 rm -r -f tmp )
4. unzip -LL tmp.zip
这样,tmp 目录中的文件名就全改为小写了。在确认无误后,可将 tmp-old 目录删除。

===============================================

linux命令实现批量处理文件的大小写转换  
把一个文件里的大写字母都转换成小写
tr A-Z a-z <file
把文件夹下所有文件的首字母转换成大写字母
ls  | awk '{print "mv "$0" "  toupper(substr($0,0,2))""substr($0,2) }' | /bin/bash

=====================================


一哥们从现场打来急电说现在有一个目录,

目录下有上千个文件,现在需要把文件名由小写全部转化为大写。



首先不能写脚本,那样的话还要教他用vi,  改权限,只能用命令了。

字符转换嘛,当然想到的是 tr :   



for file in * ;

do mv  $file `echo $file |  tr 'a-z' 'A-Z'`;

done



过了一会儿这哥们又打电话说,扩展名不要改为大写的,保留为小写就行了。

这样明显分段的事情当然要交给 awk 了:
  

for file in *;

do mv $file `echo $file | awk -F . '{print toupper($1)"."$2}' `;

done

banner免费制作 www.zhaoxi.net 提供,转载请保留

这样是可以把类似 a.txt 的文件修改了,但有多个扩展名的就没招了,比如 b.tar.gz,

还好 awk 支持变量:   

for file in *;

do mv $file `echo $file |

awk -F . ' {

                       for (i = 1; i <= NF;i++)

                                  if (i == 1)

                                        result = toupper($i);

                                 else

                                       result += "."$i;

                         print $result;

               }' `;

done

但结果是错的,一个文件名也没有改变,

查了下说gawk才支持toupper, tolower,

换成gawk 还是不对。



最后没办法只好找个折衷的方法,先全部转化为大写,然后再将扩展名转回小写:

for file in *;   

do mv $file `echo $file |

         sed -e s/.TXT/.txt/g  `;

done

但是.并没有被转义成., 而依然是代表任意字符,

这样的话如果basename中含有扩展名就悲剧了。
  

试了几下发现这样才是转义的:

             sed -e s/[.]TXT/.txt/g  `;

ok.


评分

参与人数 1金币 +10 收起 理由
天外飘仙 + 10 感谢分享,但这类帖子请发到其他版块

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-5-16 02:49 , Processed in 0.047416 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表