нашел скрипт групового переименования с изменением регистра
for i in `ls`;
do
mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
doneно как сделать, чтобы первая буква оставалась в верхнем регистре
???
>нашел скрипт групового переименования с изменением регистра
>for i in `ls`;
>do
> mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
>done
>
>но как сделать, чтобы первая буква оставалась в верхнем регистре
>???
берешь перл и делаешь ...
>берешь перл и делаешь ...а на шеле слабо?
>>берешь перл и делаешь ...
>
>а на шеле слабо?#Чтобы первая буква оставалась без изменений
for i in `ls`
do
mv "$i" ${i:0:1}`echo ${i:1} | tr [:upper:] [:lower:]`
done#Или первую букву явно в верхний регистр
for i in `ls`
do
mv "$i" `echo ${i:0:1} | tr [:lower:] [:upper:]``echo ${i:1} | tr [:upper:] [:lower:]`
done#А вообще, IMHO, это мелкософтовые извращения...
> mv "$i" ${i:0:1}`echo ${i:1} | tr [:upper:] [:lower:]`
> mv "$i" `echo ${i:0:1} | tr [:lower:] [:upper:]``echo ${i:1} |#set i=34623874
#echo {$i:1:1}
Плохой модификатор в $ (1).??????????
а у тебя это работает?
каким шелом пользуешся (или это перл)?
>> mv "$i" ${i:0:1}`echo ${i:1} | tr [:upper:] [:lower:]`
>> mv "$i" `echo ${i:0:1} | tr [:lower:] [:upper:]``echo ${i:1} |
>
>#set i=34623874
>#echo {$i:1:1}
>Плохой модификатор в $ (1).
>
>??????????
>а у тебя это работает?
>каким шелом пользуешся (или это перл)?
shell
GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.У тебя ошибочка:
#echo {$i:1:1}
^
надо
#echo ${i:1:1}
>shell
>GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
>Copyright (C) 2002 Free Software Foundation, Inc.
>
>У тебя ошибочка:
>#echo {$i:1:1}
> ^
>надо
>#echo ${i:1:1}
да я и так, и сяк пробовал. один хрен.
но я это на sh делал. попробую bash, tcsh, zsh...
>>shell
>>GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu)
>>Copyright (C) 2002 Free Software Foundation, Inc.
>>
>>У тебя ошибочка:
>>#echo {$i:1:1}
>> ^
>>надо
>>#echo ${i:1:1}
>да я и так, и сяк пробовал. один хрен.
>но я это на sh делал. попробую bash, tcsh, zsh...${string:position:length}
Extracts $length characters of substring from $string at $position.По данной теме
http://www.tldp.org/LDP/abs/html/string-manipulation.htmlа вообще,
http://www.tldp.org/LDP/abs/html/index.htmlВсе жто для bash.
>Все жто для bash.
да. работает только на bash
посему предлагаю считать тред открытым
если кто знает как такое провернуть на других шелах (более стандартных),
то милости прошу к нам.John, большое спасибо за помощь!
>нашел скрипт групового переименования с изменением регистра
>for i in `ls`;
>do
> mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
>done
>
>но как сделать, чтобы первая буква оставалась в верхнем регистре
>???[test@test sh]# cat rename.sh
#!/bin/shfor i in `ls $1`;
do
new_name=`echo "$i" | awk '{print toupper(substr($0,1,1))tolower(substr($0,2))}'`
echo "mv $i $new_name"
done
[test@test sh]# ls -l ~/sh/tmp/
total 0
-rw-r--r-- 1 root root 0 Oct 14 11:54 dfGfdlsdfDl
-rw-r--r-- 1 root root 0 Oct 14 11:54 dfgfds
-rw-r--r-- 1 root root 0 Oct 14 11:54 TTES
[test@test sh]# ./rename.sh ~/sh/tmp
mv dfGfdlsdfDl Dfgfdlsdfdl
mv dfgfds Dfgfds
mv TTES Ttes
[test@test sh]#