[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: shell script question



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hans scripsit:
>Sorry, I'm full of questions today.
>
>I'm working on a script that can rename filenames. For now I want it to add
>an underscore before each capital letter there is in the filename and make
>the capital letter lowercase: e.g. FileName --> _file_name.
>
>I tried many things like: 
>
>for a in *; do mv $a `echo $a | tr [A] [_a]`;done
>
>just to try with the letter A. I used quotes in various places, but it
>converts A in _ and not _a. I also tried the -c switch with tr, but that
>messed up thing quite badly.
>
>So basically my question is 'how to translate one character into two and
>vice versa?' Anyone? Thanks for the input.


Hi,
  perl rules:) 

rename 's/([A-Z])/_\l$1/g' *

will do the job.

As I already pointed out on this list, rename cames with the standard
perl package of potato. 

By the way,
rename 's/([A-Z])/_\l$1/g;s/^_([a-z])/\u$1/' *

will avoid putting the underscore at the beginning, changing back _a
into A.

- -- 
The Hobbit
ICQ #56656060

I am the "ILOVEGNU" signature virus. Just copy me to your signature.
This email was infected under the terms of the GNU General Public
License.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.5 and Gnu Privacy Guard <http://www.gnupg.org/>

iD8DBQE5caCXv9iOG/S6owkRAkssAJ9gRvIqr1X5lSNK2hOlIwQtc/yBrwCdGZIM
T4gQXtaxPD6uXS7FsfVWMts=
=kO91
-----END PGP SIGNATURE-----



Reply to: