Bash Scripts
April 17th, 2022
- Write a script called count.bash that, for each regular file in the working directory, prints the filename, the # of lines, and the # of words to stdout, like this:breadIsDangerous.txt 73 431
spellExample 5 21
Do not use find
Test your script with filenames that have spaces in them. Get it right.
Q 1: Upload count.bash - Write a shell script that accepts two file extensions as command line arguments and renames all files with the first extension within the current working directory to have the second extension instead.For example:
$ reextend .log .txt
Would cause install.log to be renamed to install.txt, and
$ reextend A B
Would cause TADAA to be renamed to TADAB . It would also cause file.A to be renamedfile.B .
The script should print out error messages as is appropriate if there is any problem with the command line arguments. Test the script with a range of different parameters, including incorrect parameters or missing parameters.
hint: See Parameter Expansion in the bash man or info page.
hint: See what ls -1 does.
Q 2: Call this script reextend , and upload it w/your lab. - You just used your favorite ripper to get some songs off a bunch of CDs that you legally purchased. You set the output format, got the bit-rate you wanted, but forgot to set the format for the filenames. You ended up w/listings like this:Led Zeppelin – Over the Hills and Far Away.mp3
, all in the same directory. What you really wanted was to have the songs in directories by artist, and just the song name for the filename:
Led Zeppelin/Over the Hills and Far Away.mp3
So, write a script that looks in the current directory only for mp3 files, breaks the filename out into artist and song title, creates the appropriate directory (if it doesn’t already exist), removes the artist and the first ‘ – ‘ from the filename, and moves it into the directory.
Q 3: Call this script organiseMusic , and upload it w/your lab.