Sponsored Content
Top Forums Shell Programming and Scripting Need a little help with my first shell script. Basic image resize script... Post 302956757 by mozzles on Saturday 3rd of October 2015 11:12:29 AM
Old 10-03-2015
Display Need a little help with my first shell script. Basic image resize script...

Hey everyone, just now joined because I didn't want to go onto Ubuntu forums and start asking about how to write shell scripts. Seems like this is a pretty active forum for exactly what I need.

I'm trying to modify a shell script I found online, the end goal is to have it find all files in the directory it's ran AND all subdirectories, named folder.jpg, Folder.jpg, maybe a couple more, and make thumbnails of them.

I found this script earlier, which initially was trying to resize ALL files.. mp3 and what not (because of the FILES=* I'm guessing):

Code:
#!/bin/bash
FILES=*
for f in $FILES
do
echo “Processing $f file...”

convert -thumbnail 235x $f sm_$f

done

So, I looked at this and figured I could probably replace the FILES=* with FILES=folder.jpg. Sure enough, it worked. But when I then assumed that FILES=folder.jpg Folder.jpg would work for both, I was sadly disappointed. No luck with a comma and space, comma no space, semicolon, etc. I believe with a semicolon after the first file, the script at least ran again.... lol

I've been trying to look it up but having no luck, there has to be some easy way to specify multiple file names in that situation.

As far as making it work on all subdirectories as well, I couldn't find much on that, but I did manage to read that I could do this....

Code:
find /your/dir/with/subdirs -type d -exec sh -c 'cd "{}" ; /path/to/your/script.sh ;' \;

Sure enough, it found the file I put in my test directory named folder.jpg, as well as the one in a nested directory! Would be nice to have it all packaged in a script just for the sake of not having to copy and paste that every time, but that works for now...

Also I just read about the option of making a "loop wrapper", like this...

Code:
#! /bin/bash
cd /path/to/top/level/directory

for d in */ ; do 
  pushd $d
  # call your script here
  popd
done

And plan on trying that here in a little. SO, it sounds like I'm good to go on the subdirectories part. But what about the multiple file names? Is there a way I can just put it in to the script easily, or I imagine somehow I could parse it into that find command I was using.

Also, with the original script it creates the thumbnails with the name "sm_*original-filename*.... If possible I'd like to change that to have them be named something like folder_small.jpg, or even something completely different like album_art_thumb.jpg.

When I tried changing "convert -thumbnail 235x $f sm_$f" to "convert -thumbnail 235x $f $f_small", it was a no-go. Didn't want to run at all. I imagine there's an easy way to fix that but this language is all new to me. I don't know anything besides some HTML, CSS, and how to get around on a Unix/Linux shell (been using nothing but Linux as my OS for about 8 years or so now... off and on before that since I was a little kid).

If you could please take the time and point me in the right direction, I'd really appreciate it! Again just trying to:

1. Specify multiple filenames to target, in the FILES= or otherwise...
and 2. How to change the end filename from sm_* to something that isn't text followed by the old filename.

And if you've got the time, maybe even help with the part about making it work recursively on all sub-directories.

Thanks! Glad to have found this forum. I can see how learning to make these scripts could really make a lot of things easier in the future... Smilie

Zac
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

need a quick basic shell script help

im trying to run the below if command ifconfig -a |grep 10.100.120.21 gives me below output inet addr:10.100.120.21 Bcast:10.100.120.255 Mask:255.255.255.0 i just want a basic shell which says if above exists then continue how would i do this? (6 Replies)
Discussion started by: eb222
6 Replies

2. Shell Programming and Scripting

Basic Shell script syntax help

Hi All, I am new to shell scripting. I have a variable which holds a numeric value.I have to check whether this variable holds a value between(0- 8),(8-17)(17-24).How do i write this syntax using if in shell scripting. Thanks Vignesh (2 Replies)
Discussion started by: vignesh53
2 Replies

3. Shell Programming and Scripting

shell script basic doubt

hi, I am new script learner, so my basic doubt is , how to store value of any command in a variable example $ ls | wc -l i want to stote the output of this in a variable c. so that i can use c in if else loop. and when do we use " ` " symbol in script.. can anyone also tell for... (5 Replies)
Discussion started by: hi2_t
5 Replies

4. Shell Programming and Scripting

Basic Shell Script Help

Lets say I wanted to create a script that would show what people are doing on my machine using the w command and refresh in about 6 seconds. What would be the easiest way to do this? I pretty much want the script to loop until I stop it. I'm using the BASH shell by the way. Help is appreciated.... (1 Reply)
Discussion started by: c4391
1 Replies

5. Shell Programming and Scripting

Basic shell script help

Im trying to make a script that simply adds a word to the last available line in a txt file without overwriting any previous lines. Ive googled this and there are great examples but no one explain what each function does, and i dont entirely understand how it works. Basically Im looking for... (7 Replies)
Discussion started by: kylecn
7 Replies

6. Shell Programming and Scripting

Help! Basic shell script advice

##### (2 Replies)
Discussion started by: AidoPotato
2 Replies

7. Shell Programming and Scripting

Basic question on shell script execution

I have two shell scripts in the different directories listed below, /root/dev/dir1/test.sh /root/dev/dir2/master.sh I am executing the master.sh script from the test.sh like below and getting 'Permission denied' error. #! /bin/sh #test.sh path='/root/dev' $path/dir2/master.sh But it... (2 Replies)
Discussion started by: vel4ever
2 Replies

8. Shell Programming and Scripting

Basic Combination Shell Script

I need to have a script read a file that has a list of words in a single column like below:Black Blue Brown Orange Red Yellow Green White Purple Silver Grey Tan Then print to another file just all of the two-word possible combinations. Example: Black,Blue Anyone want to take a... (4 Replies)
Discussion started by: vespasian
4 Replies

9. Shell Programming and Scripting

Basic Shell script - Not working

Hello, This is basic (i think). I am trying to run a shell script which would go into each folder (folder names defined in the list) and after entering would run some commands, once done, come out of the folder and continue until the list ends. Pretty basic and there are bunch of example online. ... (9 Replies)
Discussion started by: Zam_1234
9 Replies

10. UNIX for Beginners Questions & Answers

Beginner bash - basic shell script 'while' help...

Hi everyone, first time visitor to these forums here. Keeping a long story short I've been attempting to learn how to code in bash. I have VERY little previous experience with coding languages besides simply copying and pasting batch scripts for Windows. So, with that in mind I've followed a... (4 Replies)
Discussion started by: Meta
4 Replies
All times are GMT -4. The time now is 05:37 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy