home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/kermit +
- #
- # c h a n g e t y p e
- #
- # Given a list of files, changes the filetype of each file whose filetype
- # matches argument \%1 to argument \%2. Example:
- #
- # changetype hlp txt *
- #
- # The third argument is a filename, a wildcard to match filenames, or
- # a list of files. If it is omitted, all files in the current directory
- # are assumed.
- #
- # Illustrates:
- # . Command-line argument interpretation
- # . Array copying with offset
- # . FOR loop consruction
- # . Using \ffiles() to expand wildards and assign file list to an array
- # . Using \fstripx() to remove the "filetype" part of a filename
- # . RENAME command
- #
- # Author: F. da Cruz, The Kermit Project, Columbia University, July 1999
-
- .\%n ::= \v(argc) - 1 ; How many arguments on command line.
-
- if ( < \%n 2 ) exit 1 {Usage: \fbasename(\%0) oldtype newtype [ filelist ]}
-
- switch \%n {
- :2, .\%n := \ffiles(*.\%1,&a), break ; No args, do * in current directory.
- :3, .\%n := \ffiles(\&_[3],&a), break ; 1 arg, expand it.
- :default ; More than 1 arg, use them literally.
- array copy &_[3] &a[]
- decrement \%n 2
- }
-
- for \%i 1 \%n 1 { ; Loop through each file
- if not match \&a[\%i] *.\%1 continue
- rename /v \&a[\%i] \fstripx(\&a[\%i]).\%2
- }
- exit 0
-