# The shell script for conversion of “lowercase letters” for AvP

**URL:** <https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425>\
**Category:** avp\
**Created:** [January 7, 2015, 6:13pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425 "2015-01-07T18:13:14Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![gbudny](https://avatars.discourse-cdn.com/v4/letter/g/ed655f/32.png) [@gbudny](https://discourse.ioquake.org/u/gbudny)\
**Post date:** [January 7, 2015, 6:13pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/1 "2015-01-07T18:13:14Z")

</div>

Hi

I remember that in the Linux version of AvP created by Daniel Langnas was a file [extract.sh](http://extract.sh):

[https://www.assembla.com/code/avp\_mod/git/nodes/master/extract.sh](https://www.assembla.com/code/avp_mod/git/nodes/master/extract.sh)

I think that one of the functions of this script was a conversion of all files and directories to be lowercase. Do you plan to add a similar script to a tar archive with AvP game?

---

<div class="post-metadata">

**Author:** ![AnonymousHoser](https://avatars.discourse-cdn.com/v4/letter/a/da6949/32.png) [@AnonymousHoser](https://discourse.ioquake.org/u/AnonymousHoser)\
**Post date:** [January 29, 2015, 2:49am UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/2 "2015-01-29T02:49:20Z")

</div>

The original readme recommended [http://www.primaledge.ca/chcase.html](http://www.primaledge.ca/chcase.html)

Looks like this command would do the trick (make backups, just in case!):  
chcase -rd

---

<div class="post-metadata">

**Author:** ![gbudny](https://avatars.discourse-cdn.com/v4/letter/g/ed655f/32.png) [@gbudny](https://discourse.ioquake.org/u/gbudny)\
**Post date:** [January 29, 2015, 2:25pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/3 "2015-01-29T14:25:16Z")

</div>

It works. Thanks.

Do you plan to integrate this shell script with you version of AvP?  
That will be nice if the installation process will be simple for everyone.

$ chcase -rd ‘/home/gbudny/Downloads/app’  
/home/gbudny/Downloads/app/  
|\_\_AvP\_Classic.exe =\> avp\_classic.exe  
|\_\_README.txt =\> readme.txt  
|\_\_fastfile/  
|\_\_Snd44.FFL =\> snd44.ffl  
|\_\_Tex20.FFL =\> tex20.ffl  
|\_\_Snd26.FFL =\> snd26.ffl  
|\_\_Snd45.FFL =\> snd45.ffl  
|\_\_Tex41.FFL =\> tex41.ffl  
|\_\_Tex12.FFL =\> tex12.ffl  
|\_\_Tex46.FFL =\> tex46.ffl  
|\_\_Tex11.FFL =\> tex11.ffl  
|\_\_Snd41.FFL =\> snd41.ffl  
|\_\_Snd10.FFL =\> snd10.ffl  
|\_\_Snd34.FFL =\> snd34.ffl  
|\_\_Snd9.FFL =\> snd9.ffl  
|\_\_Tex33.FFL =\> tex33.ffl  
|\_\_Tex56.FFL =\> tex56.ffl  
|\_\_Snd38.FFL =\> snd38.ffl  
|\_\_Tex49.FFL =\> tex49.ffl  
|\_\_Tex14.FFL =\> tex14.ffl  
|\_\_Tex25.FFL =\> tex25.ffl  
|\_\_Tex48.FFL =\> tex48.ffl  
|\_\_Snd24.FFL =\> snd24.ffl  
|\_\_Tex53.FFL =\> tex53.ffl  
|\_\_Snd49.FFL =\> snd49.ffl  
|\_\_Snd35.FFL =\> snd35.ffl  
|\_\_Tex22.FFL =\> tex22.ffl  
|\_\_Tex1.FFL =\> tex1.ffl  
|\_\_Tex43.FFL =\> tex43.ffl  
|\_\_Tex57.FFL =\> tex57.ffl  
|\_\_Tex32.FFL =\> tex32.ffl  
|\_\_Tex7.FFL =\> tex7.ffl  
|\_\_Snd12.FFL =\> snd12.ffl  
|\_\_Snd46.FFL =\> snd46.ffl  
|\_\_Snd48.FFL =\> snd48.ffl  
|\_\_Tex36.FFL =\> tex36.ffl  
|\_\_Snd20.FFL =\> snd20.ffl  
|\_\_Tex39.FFL =\> tex39.ffl  
|\_\_Tex42.FFL =\> tex42.ffl  
|\_\_Tex2.FFL =\> tex2.ffl  
|\_\_Snd47.FFL =\> snd47.ffl  
|\_\_Tex4.FFL =\> tex4.ffl  
|\_\_Snd50.FFL =\> snd50.ffl  
|\_\_Tex54.FFL =\> tex54.ffl  
|\_\_Tex10.FFL =\> tex10.ffl  
|\_\_Snd17.FFL =\> snd17.ffl  
|\_\_Snd29.FFL =\> snd29.ffl  
|\_\_Tex38.FFL =\> tex38.ffl  
|\_\_Tex27.FFL =\> tex27.ffl  
|\_\_Tex28.FFL =\> tex28.ffl  
|\_\_Snd21.FFL =\> snd21.ffl  
|\_\_Snd23.FFL =\> snd23.ffl  
|\_\_Tex24.FFL =\> tex24.ffl  
|\_\_PredSound.dat =\> predsound.dat  
|\_\_Tex31.FFL =\> tex31.ffl  
|\_\_Tex19.FFL =\> tex19.ffl  
|\_\_Snd16.FFL =\> snd16.ffl  
|\_\_Tex21.FFL =\> tex21.ffl  
|\_\_Tex40.FFL =\> tex40.ffl  
|\_\_Tex9.FFL =\> tex9.ffl  
|\_\_Tex26.FFL =\> tex26.ffl  
|\_\_Snd37.FFL =\> snd37.ffl  
|\_\_Tex37.FFL =\> tex37.ffl  
|\_\_Tex23.FFL =\> tex23.ffl  
|\_\_Tex8.FFL =\> tex8.ffl  
|\_\_Tex17.FFL =\> tex17.ffl  
|\_\_Snd31.FFL =\> snd31.ffl  
|\_\_QueenSound.dat =\> queensound.dat  
|\_\_Tex13.FFL =\> tex13.ffl  
|\_\_Snd11.FFL =\> snd11.ffl  
|\_\_Tex29.FFL =\> tex29.ffl  
|\_\_Snd33.FFL =\> snd33.ffl  
|\_\_Snd30.FFL =\> snd30.ffl  
|\_\_Snd28.FFL =\> snd28.ffl  
|\_\_Tex58.FFL =\> tex58.ffl  
|\_\_Tex18.FFL =\> tex18.ffl  
|\_\_Tex15.FFL =\> tex15.ffl  
|\_\_Tex34.FFL =\> tex34.ffl  
|\_\_AlienSound.dat =\> aliensound.dat  
|\_\_Snd19.FFL =\> snd19.ffl  
|\_\_Tex51.FFL =\> tex51.ffl  
|\_\_Snd15.FFL =\> snd15.ffl  
|\_\_Tex45.FFL =\> tex45.ffl  
|\_\_Tex50.FFL =\> tex50.ffl  
|\_\_Snd8.FFL =\> snd8.ffl  
|\_\_Snd14.FFL =\> snd14.ffl  
|\_\_Snd25.FFL =\> snd25.ffl  
|\_\_Snd40.FFL =\> snd40.ffl  
|\_\_Tex52.FFL =\> tex52.ffl  
|\_\_Snd27.FFL =\> snd27.ffl  
|\_\_Snd32.FFL =\> snd32.ffl  
|\_\_Tex35.FFL =\> tex35.ffl  
|\_\_Snd39.FFL =\> snd39.ffl  
|\_\_Snd18.FFL =\> snd18.ffl  
|\_\_Tex6.FFL =\> tex6.ffl  
|\_\_Snd36.FFL =\> snd36.ffl  
|\_\_Snd43.FFL =\> snd43.ffl  
|\_\_Tex44.FFL =\> tex44.ffl  
|\_\_Snd51.FFL =\> snd51.ffl  
|\_\_Tex16.FFL =\> tex16.ffl  
|\_\_Tex30.FFL =\> tex30.ffl  
|\_\_Tex5.FFL =\> tex5.ffl  
|\_\_Snd6.FFL =\> snd6.ffl  
|\_\_Snd42.FFL =\> snd42.ffl  
|\_\_Snd4.FFL =\> snd4.ffl  
|\_\_Snd2.FFL =\> snd2.ffl  
|\_\_Snd5.FFL =\> snd5.ffl  
|\_\_Snd22.FFL =\> snd22.ffl  
|\_\_Tex47.FFL =\> tex47.ffl  
|\_\_Snd7.FFL =\> snd7.ffl  
|\_\_Tex55.FFL =\> tex55.ffl  
|\_\_Snd13.FFL =\> snd13.ffl  
|\_\_Snd3.FFL =\> snd3.ffl  
|\_\_Tex3.FFL =\> tex3.ffl  
|\_\_Galaxy.dll =\> galaxy.dll  
|\_\_SMACKW32.DLL =\> smackw32.dll  
|\_\_\_\_support/  
|\_\_add/  
|\_\_avp\_huds/  
|\_\_Tongue.RIF =\> tongue.rif  
|\_\_alien\_hud.RIF =\> alien\_hud.rif  
|\_\_pred ship fury.RIF =\> pred ship fury.rif  
|\_\_DROPSHIP.RIF =\> dropship.rif  
|\_\_hnpcpred\_alien.RIF =\> hnpcpred\_alien.rif  
|\_\_hnpc\_xenoborg.RIF =\> hnpc\_xenoborg.rif  
|\_\_Disk.RIF =\> disk.rif  
|\_\_hnpc\_civvie.RIF =\> hnpc\_civvie.rif  
|\_\_queen.RIF =\> queen.rif  
|\_\_hnpcmarine.RIF =\> hnpcmarine.rif  
|\_\_pred\_hud.RIF =\> pred\_hud.rif  
|\_\_Mdisk.RIF =\> mdisk.rif  
|\_\_sentry.RIF =\> sentry.rif  
|\_\_CREDITS.txt =\> credits.txt  
|\_\_avp\_rifs/  
|\_\_SUBWAY.rif =\> subway.rif  
|\_\_hive\_c.RIF =\> hive\_c.rif  
|\_\_Derelict\_A.RIF =\> derelict\_a.rif  
|\_\_E3demoSP.rif =\> e3demosp.rif  
|\_\_Furyall.RIF =\> furyall.rif  
|\_\_Jockey.RIF =\> jockey.rif  
|\_\_hive.RIF =\> hive.rif  
|\_\_Als-dm.RIF =\> als-dm.rif  
|\_\_Area52.RIF =\> area52.rif  
|\_\_Nost03.RIF =\> nost03.rif  
|\_\_Stat101\_M.rif =\> stat101\_m.rif  
|\_\_Invasion\_P.RIF =\> invasion\_p.rif  
|\_\_Hangar.RIF =\> hangar.rif  
|\_\_kens-co-op.RIF =\> kens-co-op.rif  
|\_\_Temple\_M.RIF =\> temple\_m.rif  
|\_\_Nost03\_M.rif =\> nost03\_m.rif  
|\_\_Statue.RIF =\> statue.rif  
|\_\_Fall.RIF =\> fall.rif  
|\_\_Invasion.RIF =\> invasion.rif  
|\_\_Leadworks\_coop.rif =\> leadworks\_coop.rif  
|\_\_Sulaco\_a.RIF =\> sulaco\_a.rif  
|\_\_Sulaco.RIF =\> sulaco.rif  
|\_\_Base.RIF =\> base.rif  
|\_\_Temple\_p.RIF =\> temple\_p.rif  
|\_\_Caverns\_A.RIF =\> caverns\_a.rif  
|\_\_Compoundcoop.RIF =\> compoundcoop.rif  
|\_\_Lab14coop.rif =\> lab14coop.rif  
|\_\_Invasion\_A.RIF =\> invasion\_a.rif  
|\_\_Lockdown4.rif =\> lockdown4.rif  
|\_\_Leadworks.rif =\> leadworks.rif  
|\_\_Trapped.RIF =\> trapped.rif  
|\_\_Breakout\_P.rif =\> breakout\_p.rif  
|\_\_SUBWAYcoop.rif =\> subwaycoop.rif  
|\_\_Compound.RIF =\> compound.rif  
|\_\_Fall\_m.RIF =\> fall\_m.rif  
|\_\_Vaults.RIF =\> vaults.rif  
|\_\_Breakout.RIF =\> breakout.rif  
|\_\_Caverns.RIF =\> caverns.rif  
|\_\_Stat101.RIF =\> stat101.rif  
|\_\_Lab14.rif =\> lab14.rif  
|\_\_Escape.RIF =\> escape.rif  
|\_\_Genshd1.RIF =\> genshd1.rif  
|\_\_Derelict.RIF =\> derelict.rif  
|\_\_Temple.RIF =\> temple.rif  
|\_\_E3demo.RIF =\> e3demo.rif  
|\_\_Vaults\_M.RIF =\> vaults\_m.rif  
|\_\_Sulaco\_p.RIF =\> sulaco\_p.rif  
|\_\_jockeycoop.RIF =\> jockeycoop.rif  
|\_\_Battle.RIF =\> battle.rif  
|\_\_CD Tracks.txt =\> cd tracks.txt  
|\_\_FMVs =\> fmvs  
|\_\_fmvs/  
|\_\_08 Vaults.bik =\> 08 vaults.bik  
|\_\_10 Caverns.bik =\> 10 caverns.bik  
|\_\_AlienOutro.bik =\> alienoutro.bik  
|\_\_04 Orbital.bik =\> 04 orbital.bik  
|\_\_06 Waterfall.bik =\> 06 waterfall.bik  
|\_\_03 Invasion.bik =\> 03 invasion.bik  
|\_\_13 Gateway.bik =\> 13 gateway.bik  
|\_\_05 Tyrargo.bik =\> 05 tyrargo.bik  
|\_\_14 Escape.bik =\> 14 escape.bik  
|\_\_Menubackground.bik =\> menubackground.bik  
|\_\_PredatorOutro.bik =\> predatoroutro.bik  
|\_\_12 Temple.bik =\> 12 temple.bik  
|\_\_MarineIntro.bik =\> marineintro.bik  
|\_\_01 Marine Music 1.bik =\> 01 marine music 1.bik  
|\_\_Message154.smk =\> message154.smk  
|\_\_Message158.smk =\> message158.smk  
|\_\_PredatorIntro.bik =\> predatorintro.bik  
|\_\_IntroSound.smk =\> introsound.smk  
|\_\_AlienIntro.bik =\> alienintro.bik  
|\_\_11 Ferarco.bik =\> 11 ferarco.bik  
|\_\_02 Colony.bik =\> 02 colony.bik  
|\_\_15 Earthbound.bik =\> 15 earthbound.bik  
|\_\_MarineOutro.bik =\> marineoutro.bik  
|\_\_09 Fury 161.bik =\> 09 fury 161.bik  
|\_\_07 Area 52.bik =\> 07 area 52.bik

---

<div class="post-metadata">

**Author:** ![MajorLunaC](https://avatars.discourse-cdn.com/v4/letter/m/76d3ee/32.png) [@MajorLunaC](https://discourse.ioquake.org/u/MajorLunaC)\
**Post date:** [February 15, 2015, 9:40pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/4 "2015-02-15T21:40:05Z")

</div>

Put the following line in a terminal open in the directory full of files you want lowercase, and it does the same thing (tr is a nifty program!):

for i in \* ; do mv -n “$i” “$(echo “$i” | tr [:upper:] [:lower:])” ; done

---

<div class="post-metadata">

**Author:** ![gbudny](https://avatars.discourse-cdn.com/v4/letter/g/ed655f/32.png) [@gbudny](https://discourse.ioquake.org/u/gbudny)\
**Post date:** [February 16, 2015, 5:50pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/5 "2015-02-16T17:50:55Z")

</div>

Thanks.

Unfortunately, this command works only with files placed in the current directory, and chase can be used with current directory and files located in subdirectories.

---

<div class="post-metadata">

**Author:** ![MajorLunaC](https://avatars.discourse-cdn.com/v4/letter/m/76d3ee/32.png) [@MajorLunaC](https://discourse.ioquake.org/u/MajorLunaC)\
**Post date:** [February 17, 2015, 2:08am UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/6 "2015-02-17T02:08:13Z")

</div>

Try this then, in the AvP directory. It may have more commands, but it’s shorter overall:

find . -type f | while read i ; do mv -n “$i” “$(echo “$i” | rev | cut -f1 -d/ --complement | rev )/$(echo “$i” | rev | cut -f1 -d/ | rev | tr [:upper:] [:lower:])” ; done

---

<div class="post-metadata">

**Author:** ![gbudny](https://avatars.discourse-cdn.com/v4/letter/g/ed655f/32.png) [@gbudny](https://discourse.ioquake.org/u/gbudny)\
**Post date:** [February 17, 2015, 8:04pm UTC](https://discourse.ioquake.org/t/the-shell-script-for-conversion-of-lowercase-letters-for-avp/425/7 "2015-02-17T20:04:26Z")

</div>

I will try it.

I think that will be cool if after the compilation process I will see the question about the directory with the game. In this case, I can just type name of the directory. Later, the shell script will use this command or chase, and then copy the binary file AvP to the directory with the game.
