URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 49310
[ Назад ]

Исходное сообщение
"груповое переименование файлов"

Отправлено Admin_badmin , 13-Окт-04 12:35 
нашел скрипт групового переименования с изменением регистра
for i in `ls`;
do
  mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
done

но как сделать, чтобы первая буква оставалась в верхнем регистре
???


Содержание

Сообщения в этом обсуждении
"груповое переименование файлов"
Отправлено globus , 13-Окт-04 13:53 
>нашел скрипт групового переименования с изменением регистра
>for i in `ls`;
>do
>  mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
>done
>
>но как сделать, чтобы первая буква оставалась в верхнем регистре
>???
берешь перл и делаешь ...

"груповое переименование файлов"
Отправлено Admin_badmin , 13-Окт-04 15:02 
>берешь перл и делаешь ...

а на шеле слабо?


"груповое переименование файлов"
Отправлено John , 13-Окт-04 16:04 
>>берешь перл и делаешь ...
>
>а на шеле слабо?

#Чтобы первая буква оставалась без изменений
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, это мелкософтовые извращения...


"груповое переименование файлов"
Отправлено Admin_badmin , 13-Окт-04 17:10 
>  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).

??????????
а у тебя это работает?
каким шелом пользуешся (или это перл)?


"груповое переименование файлов"
Отправлено John , 13-Окт-04 21:28 
>>  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}


"груповое переименование файлов"
Отправлено Admin_badmin , 13-Окт-04 21:42 
>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...


"груповое переименование файлов"
Отправлено John , 13-Окт-04 21:45 
>>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.


"груповое переименование файлов"
Отправлено Admin_badmin , 14-Окт-04 12:15 
>Все жто для bash.
да. работает только на bash
посему предлагаю считать тред открытым
если кто знает как такое провернуть на других шелах (более стандартных),
то милости прошу к нам.

John, большое спасибо за помощь!



"груповое переименование файлов"
Отправлено Brainbug , 14-Окт-04 13:16 
>нашел скрипт групового переименования с изменением регистра
>for i in `ls`;
>do
>  mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`;
>done
>
>но как сделать, чтобы первая буква оставалась в верхнем регистре
>???

[test@test sh]# cat rename.sh
#!/bin/sh

for 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]#