Shell script: foreach file -> targzip


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script: foreach file -> targzip
# 1  
Old 04-17-2010
Shell script: foreach file -> targzip

Hi there,

I need some help with a shell script (I'm no sh script expert, but I hope this will explain how I want my script):
Code:
dir = /home/user/files/
foreach(*.jpg file in $dir) {
    tar -cf $file(-.jpg).tar $file;gzip $file(-.jpg).tar
}
mv -f $dir*tar.gz /home/user/pictures/

Thanks for any help. Smilie
# 2  
Old 04-17-2010
Something like
Code:
#!/bin/bash
DIR=/home/user/files
for FILE in $DIR/*.jpg
do
    F=${FILE%.jpg}
    tar -cf $F.tar $FILE
    gzip $F.tar
    mv -f $DIR/$F.tar.gz /home/user/pictures/
done


Last edited by frans; 04-19-2010 at 03:17 AM.. Reason: corrected for only .jpg files
# 3  
Old 04-18-2010
Thanks for the reply, but would this script only work for *.jpg files? <3
# 4  
Old 04-19-2010
Quote:
Originally Posted by JKMlol
Thanks for the reply, but would this script only work for *.jpg files? <3
Smilie It didn't but i've corrected it so it does. Smilie
This User Gave Thanks to frans For This Post:
# 5  
Old 06-02-2010
Hmm,

if it's no .jpg files in the files, it makes two files:
.tar
.tar.gz

Is it possible to run the for - only if there are any .jpg files in the dir?

Thanks.
# 6  
Old 06-02-2010
Try adding this between DIR= and for:
Code:
ls $DIR/*.jpg >/dev/null 2>&1
if [ $? == 0 ]; then

and append following to the end of your script:
Code:
else
echo "No jpg files in $DIR"
fi

This User Gave Thanks to pseudocoder For This Post:
# 7  
Old 06-05-2010
Thanks guys!

I found another 'bug'. I only want the jpg file to be packed, not
Code:
home
	user
		files
			image.jpg

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Use foreach with sed in a bash script

I want to extract data from a ASCII file that looks like the one provided here (see input.txt). For this purpose I used sed commands. I want to chain the sed commands into a script that I can call with custom variables, instead of having to run it multiple times (Need to run the code for 30*24 =... (1 Reply)
Discussion started by: learningtocode
1 Replies

2. Shell Programming and Scripting

Foreach alternative - C shell

Hi all I wrote a foreach loop in c-shell: foreach file (/.../fileNames*) ... end The problem is that if there aren't matching files in the directory I'm getting a "foreach: No match". How can I rewrite it so the script will just skip the loop if there aren't any matching files? ... (4 Replies)
Discussion started by: Somename
4 Replies

3. UNIX for Dummies Questions & Answers

Shell script foreach help

I am writing a shell script to uncompress files in a directory, then call a Perl script to search the files for given terms, store those terms in a different output file , and compress the output. I get a syntax error with my use of foreach. Below is my script. #!/bin/csh -fxv if (!... (2 Replies)
Discussion started by: dgrayman
2 Replies

4. Shell Programming and Scripting

foreach loop in unix script

Hi all, I have a script which searches for all sql files in the current directory and replaces all sql files with an underscore with a dash. The next part I need to do is record the number of changes made (underscore to dash) and display this value (e.g.2). This is what I have so far; find /... (17 Replies)
Discussion started by: shawi
17 Replies

5. Shell Programming and Scripting

foreach loop working in terminal but not in the script

Hi, I am new here I have used the forums a long time to search for things they are very helpful. I have unfortunately used up all my resources (professors, grad students) and need some help. I have this very simple piece of code (using to isolate the problem) in a csh script: #!/bin/csh... (12 Replies)
Discussion started by: bflinchum
12 Replies

6. Shell Programming and Scripting

expect ssh script issue with if and foreach

Hi, I am trying to create an ssh script to login to cisco routers and activate/deactivate bgp neighbors if they match certain conditions. I dont think my "if" and "foreach" are working correctly. Any help is appreciated. Below is my script: ... (0 Replies)
Discussion started by: blahblahsomeone
0 Replies

7. UNIX for Dummies Questions & Answers

foreach shell question

Hi I would like foreach to go through a range of numbers 1-365. This input is being read by a compiled fortran program in the same shell script. Let me try an example to clarify #!/bin/sh foreach i (1-365) ./data_make program <<EOF 'echo $i' /data_'echo $i' #output file I... (10 Replies)
Discussion started by: d_kowalske
10 Replies

8. Shell Programming and Scripting

Shell Integer with nested foreach

I am scripting in tcsh and here is what I currently have: foreach group (g1 g2 g3 g4) set ppl = `cat $group.file.with.list.of.ppl.in.row.format` set label = 1 @ label += 1 foreach ppls ($ppl) echo $label >> file end end ... (0 Replies)
Discussion started by: bonesy
0 Replies

9. Shell Programming and Scripting

C Shell - foreach - No Match error

Hi All, I am facing 'No Match' problem with foreach loop in C shell script. Initially I tried following grep command showing results properly as shown at the end of the Thread. But foreach command is throwing the error 'No match'. grep -n Inserted audit_file foreach insertstr (`grep -n... (0 Replies)
Discussion started by: adurga
0 Replies

10. UNIX for Dummies Questions & Answers

foreach in shell scripting

I need to read list of machines from a file using foreach loop. I am trying the follwing, but its not reading the list foreach i (`cat file.lst | awk '{print $1}'`) ls -l | grep $i end here the file file.lst contains list of files Any idea whats wrong here Thanks Krisyet (2 Replies)
Discussion started by: krisyet
2 Replies
Login or Register to Ask a Question