For-loop not working


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting For-loop not working
# 1  
Old 07-29-2015
For-loop not working

Hello all,

I would like to unzip some files with a for-loop.

Is there anyone who could tell me how I should do this - in a correct way?

Code:
for file in $(ls); do echo gzip -d < $file | tar xf -; done

The problem is the pipe - I believe. But how could I do it? I need it for the command line. To do it with a script is not the solution - in this case.
# 2  
Old 07-29-2015
You need to send the output of gzip to stdout, using the -c option. If your files end with .tar.gz try:
Code:
for file in *.tar.gz ; do gzip -cd "$file" | tar xf -; done

Some tar implementations recognize a gzipped or compressed file and you can use
Code:
for file in *.tar.gz ; do tar xf "$file"; done

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 07-29-2015
Quote:
Originally Posted by Scrutinizer
.
.
.
you can use
Code:
for file in *.tar.gz ; do tar xf "$file"; done

Wouldn't tar need the z command, then?
# 4  
Old 07-29-2015
Perhaps with some tars you need the -z option.

... At least with BSD tar:
Code:
     -y      (c mode only) Compress the resulting archive with bzip2(1).  In extract or list modes, this option is ignored.  Note that,
             unlike other tar implementations, this implementation recognizes bzip2 compression automatically when reading archives.

     -z      (c mode only) Compress the resulting archive with gzip(1).  In extract or list modes, this option is ignored.  Note that, unlike
             other tar implementations, this implementation recognizes gzip compression automatically when reading archives.

     -Z      (c mode only) Compress the resulting archive with compress(1).  In extract or list modes, this option is ignored.  Note that,
             unlike other tar implementations, this implementation recognizes compress compression automatically when reading archives.

Maybe this will not work with GNU tar, I cannot test this at the moment..
# 5  
Old 07-29-2015
Thanks for your quick response.

@Scrutinizer
This works fine for me. The -c option was the solution.
Code:
for file in *.tar.gz; do gzip -cd "$file" | tar xf -; done

@RudiC
The tar-command I use does not have a -z option and it won't also be able to recognize a compressed file.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

for loop not working

Hi, I have ten different files to extract. so I thought for loop will help me. but it's not working for me. Please advice what I am doing wrong. for INCI in 1 2 3 4 5 6 7 8 9 10 do tar -xvf Update_INCI11.10.002_lnx86_1of10.tar done second file name is... (3 Replies)
Discussion started by: samnyc
3 Replies

2. Programming

C While Loop not working like C++

Hi new to C give me a hand thank. do { bzero(input,256); printf("Please enter the country name!"); scanf("%s",input); //& character is essential for scanf(), %f = float, %399s as the last character to be the null character ('\0'). } while... (5 Replies)
Discussion started by: GQiang
5 Replies

3. Shell Programming and Scripting

For loop not working

Hi All, For loop in ksh not working if it was given in the following method. simple script: for i in {1..4} do echo $i done Output: {1..4} Even below also not working :( Script: for (( c=1; c<=5; c++ )) do echo "Welcome $c times..." done Output: ./x.sh: 0403-057 Syntax error... (13 Replies)
Discussion started by: girish_satyam
13 Replies

4. Shell Programming and Scripting

while loop not working

hi everyone i am facing a very strange problem . please help me why my while loop is not working. below is my code #!/bin/ksh file=RCMC_ABC_999_080924_210813.DAR echo ${file} value=001 count=10 echo "abc" echo ${count} value=$((${value} + 1 )) echo ${value} while ] do echo... (3 Replies)
Discussion started by: aishsimplesweet
3 Replies

5. Shell Programming and Scripting

While loop not working

here we go.. While loop is not working file.. It also invokes one more shell scripts for which parameters need to passed on. while read line do #### #### We want to have a logfile for each load #### PLog="${LogDir}/${Script}.log"; #### ... (5 Replies)
Discussion started by: premkumardr
5 Replies

6. UNIX for Advanced & Expert Users

If loop is not working

The following piece of code is not running because it is fails to go inside the if condition. i want to create a directory if there is no directory in the input path. i am using Linux, by CENT. Please help. echo " Enter the path where you u want to extract the tar" read EXTRACT_PATH ls -ld... (12 Replies)
Discussion started by: toanilsharma1
12 Replies

7. UNIX for Dummies Questions & Answers

If then else loop not working

If then else segment of below code is not working. For each filename code is displaying output for if part as well as else part. Please help its urgent. for usercusttop in `echo ${filename}|sort|uniq|cut -c 1-${actualwordcount}` do ... (2 Replies)
Discussion started by: findprakash
2 Replies

8. Shell Programming and Scripting

For loop not working...! :(

Could some one help me on this... For loop is working...! for x in $i do for y in $j do z=`echo $y | awk '{print $2}'` if then FS=`/usr/bin/echo $y` echo $FS >>$Basic_location/out.csv fi done CPRT="Cpoyright @ BTOIDCIM" done (3 Replies)
Discussion started by: bullz26
3 Replies

9. Shell Programming and Scripting

if loop is not working

Hello i am trying to remove a line using an input file , but this depends upon user interaction here is the sample #!/bin/sh echo "Please enter whether you want to remove Profile" read value1 if ;then sed /movie/d temp.txt> temp3.txt else echo "Script didnot remove profile" fi ... (3 Replies)
Discussion started by: ranga27
3 Replies

10. Shell Programming and Scripting

Loop not working

Apologize if this is doesn't come under this group. I have a small script to find out users who last logged in to check there mail. (Tru 64 4.0, Netscape mail 3.6) -----> cat $1|awk -F: '$2=="SMTP-Accept" && $5~/@maildomain/ {s=$5;u++;las=substr($1)} END {for (i in u) {print... (2 Replies)
Discussion started by: nitin
2 Replies
Login or Register to Ask a Question