免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2129 | 回复: 6
打印 上一主题 下一主题

将一个目录下所以文件名都转成小写字母的脚本!讨论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-18 16:26 |只看该作者 |倒序浏览
cvitem()
{
echo "mv $1 `dirname $1`/`basename $1 | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"
}

[ $# = 0 ] && { echo "Usage: lcdir item1 item2 ..."; exit; }

for item in $*
do
[ "`dirname $item`" != "`basename $item`" ] && {
[ -d $item ] &&
{
for subitem in `ls $item`
do
./cvit.sh $item/$subitem
done
}
cvitem $item
}
done


这个脚本确实能解决实际问题。但是
echo "mv $1 `dirname $1`/`basename $1 | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"

不太理解,大家讨论讨论啊!

论坛徽章:
0
2 [报告]
发表于 2005-11-18 16:29 |只看该作者
这么快,你就给贴出来啦,嘿嘿!!!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2005-11-18 16:41 |只看该作者
有什么问题么?

论坛徽章:
0
4 [报告]
发表于 2005-11-18 16:54 |只看该作者
怎么用?
在所要改的目录下执行就可以吗?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-11-18 17:35 |只看该作者
tr A-Z a-z不就得了

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-11-19 02:22 |只看该作者

  1. awk 'BEGIN{while("ls"|getline)print "mv "$0" "tolower($0)}'|sh
复制代码

论坛徽章:
0
7 [报告]
发表于 2005-11-19 17:16 |只看该作者
info sed看到的例子。。。

  1. #! /bin/sh
  2. # rename files to lower/upper case...
  3. #
  4. # usage:
  5. #    move-to-lower *
  6. #    move-to-upper *
  7. # or
  8. #    move-to-lower -R .
  9. #    move-to-upper -R .
  10. #

  11. help()
  12. {
  13. cat << eof
  14. Usage: $0 [-n] [-r] [-h] files...

  15. -n      do nothing, only see what would be done
  16. -R      recursive (use find)
  17. -h      this message
  18. files   files to remap to lower case

  19. Examples:
  20.     $0 -n *        (see if everything is ok, then...)
  21.     $0 *

  22.     $0 -R .

  23. eof
  24. }

  25. apply_cmd='sh'
  26. finder='echo "$@" | tr " " "\n"'
  27. files_only=

  28. while :
  29. do
  30. case "$1" in
  31.      -n) apply_cmd='cat' ;;
  32.      -R) finder='find "$@" -type f';;
  33.      -h) help ; exit 1 ;;
  34.      *) break ;;
  35. esac
  36. shift
  37. done

  38. if [ -z "$1" ]; then
  39.      echo Usage: $0 [-h] [-n] [-r] files...
  40.      exit 1
  41. fi

  42. LOWER='abcdefghijklmnopqrstuvwxyz'
  43. UPPER='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

  44. case `basename $0` in
  45.      *upper*) TO=$UPPER; FROM=$LOWER ;;
  46.      *)       FROM=$UPPER; TO=$LOWER ;;
  47. esac

  48. eval $finder | sed -n '

  49. # remove all trailing slashes
  50. s/\/*$//

  51. # add ./ if there is no path, only a filename
  52. /\//! s/^/.\//

  53. # save path+filename
  54. h

  55. # remove path
  56. s/.*\///

  57. # do conversion only on filename
  58. y/'$FROM'/'$TO'/

  59. # now line contains original path+file, while
  60. # hold space contains the new filename
  61. x

  62. # add converted file name to line, which now contains
  63. # path/file-name\nconverted-file-name
  64. G

  65. # check if converted file name is equal to original file name,
  66. # if it is, do not print nothing
  67. /^.*\/\(.*\)\n\1/b

  68. # now, transform path/fromfile\n, into
  69. # mv path/fromfile path/tofile and print it
  70. s/^\(.*\/\)\(.*\)\n\(.*\)$/mv \1\2 \1\3/p

  71. ' | $apply_cmd
复制代码

[ 本帖最后由 ktdid 于 2005-11-19 17:19 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP