改权限,只能用命令了。字符转换嘛,当然想到的是
tr
:
www.dnjsb.com
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
.
toupper($1).$2}'
`done这样是可以把类似
a.txt
的文件修改了,但有多个扩展名的就没招了,比如
b.tar.gz,还好
awk
支持变量:
www.dnjsb.com
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
$result
}'
`done但结果是错的,一个文件名也没有改变,查了下说gawk才支持toupper,
tolower,换成gawk
还是不对。最后没办法只好找个折衷的方法,先全部转化为大写,然后再将扩展名转回小写:for
file
in
*
www.dnjsb.com
do
mv
$file
`echo
$file
|
sed
-e
s//.TXT//.txt/g
`done但是/.并没有被转义成.,
而依然是代表任意字符,这样的话如果basename中含有扩展名就悲剧了。
试了几下发现这样才是转义的:
sed
-e
s/[.]TXT/.txt/g
`ok.
将文件名作为程序的参数,这个就是位置变量了哦,比如$1。
如果要将字符转化的话,
就是用tr了转换了,
比如tr
A-Z
a-z
如果楼主不懂的话,
就私下交流了。
当然,
以后要是遇到了Linux服务器的问题,
shell编程问题,
linux系统管理,
等等的问题,
也都可以一起研究啊!
windows有个设置,默认是选上的,就是要是一个文件名全部是大写字母,就自动变成全是小写这是因为在以前的dos系统里文件名只能是大写,自己输入小写也自动当成大写处理,但是在windows里支持小写文件名,这样不太符合windows的习惯
就是说,在windows里看着是大写,实际上本来就是小写,解决方法是可以在linux里改成大写,或者在windows里去掉那个设置,具体记不清了,大概是在文件夹选项里!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)