LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1050|回复: 3

求助!需要一脚本,可以将某一目录下的所有文件的扩展名去掉

[复制链接]
发表于 2003-3-25 10:37:10 | 显示全部楼层 |阅读模式
谢谢!
发表于 2003-3-25 23:47:09 | 显示全部楼层
举例:
1.建立若干有扩展名的文件
javalee//home/javalee/lx/a>touch as.sdafas dfd.efrsd dfs.were werwe.sdf
javalee//home/javalee/lx/a>ls
a  as.sdafas  b  c  d  dfd.efrsd  dfs.were  e  f  werwe.sdf
2,javalee//home/javalee/lx/a>for i in *.*         #只包括有扩展名的文件
> do
> mv $i ${i%[\.]*}        #模式匹配并删除扩展名, 要用\转义
> done
javalee//home/javalee/lx/a>ls #结果
a  as  b  c  d  dfd  dfs  e  f  werwe
发表于 2003-3-26 15:45:29 | 显示全部楼层
如果文件名是abc.tar.gz.123 呢?
发表于 2003-3-26 16:53:15 | 显示全部楼层
道理是一样的,请查阅关于"子串的变量扩展",它的表达是:
${变量%模式}        变量值的最小尾部和模式想匹配并删除它
$(变量%%模式}        变量值的最大尾部和模式想匹配并删除它
${变量#模式}        变量值的最小头部和模式想匹配并删除它
${变量##模式}        变量值的最大头部和模式想匹配并删除它
如:有如下不等扩展名的文件
javalee//home/javalee/lx/a>ls
a.a  b.b.b  c.c.c.c  dd.er.23.fds  我.txt.exe.old.ext
javalee//home/javalee/lx/a>for i in *.*
> do
> mv $i ${i%%[\.]*}
> done
javalee//home/javalee/lx/a>ls
a  b  c  dd  我


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

本版积分规则

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