LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: GGMM

请教如何将当前文件夹下所有的文件名从大写变成小写?

[复制链接]
发表于 2007-4-16 09:05:12 | 显示全部楼层
Post by huan

  1. [0 No.2046 huan@huan /tmp/a]$ cat RENAME.SH
  2. #! /bin/bash

  3. for f in $( find $1 -depth -type f ); do
  4.     cd $( dirname $f )
  5.     rename 'y/A-Z/a-z/' $( basename $f)
  6.     cd -
  7. done

  8. [0 No.2047 huan@huan /tmp/a]$ tree
  9. .
  10. |-- RENAME.SH
  11. `-- a
  12.     |-- AA
  13.     `-- b
  14.         |-- BB
  15.         `-- c
  16.             `-- CC

  17. 3 directories, 4 files

  18. [0 No.2048 huan@huan /tmp/a]$ bash ./RENAME.SH ./

  19. [0 No.2049 huan@huan /tmp/a]$ tree
  20. .
  21. |-- a
  22. |   |-- aa
  23. |   `-- b
  24. |       |-- bb
  25. |       `-- c
  26. |           `-- cc
  27. `-- rename.sh

  28. 3 directories, 4 files

  29. [0 No.2050 huan@huan /tmp/a]$


复制代码

excellent!
回复 支持 反对

使用道具 举报

发表于 2007-4-16 13:21:23 | 显示全部楼层
楼上没测试目录名是大写的情况。没防止文件名带空格的情况。
find |tac|while read a;do b="${a%/*}/"; d="$(echo ${a##*/}|sed 's/\(.\)/\L\1/g')"; mv "$a" "$b$d";done
回复 支持 反对

使用道具 举报

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

本版积分规则

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