[NTLUG:Discuss] Interesting bash shell scripting

Stuart Yarus syarus at kvsystems.org
Thu Mar 12 04:23:36 CDT 2009


Daniel Hauck wrote:

>Just thought I'd take a moment to share something I learned.
>
>I have this folder with a set of RAR archive files and I wanted to
>extract them but they are large and it consumes time to use a GUI.  So I
>decided I wanted to use the command line in some way that makes sense.
>Unfortunately, I can't just say "unrar x *.rar" because unrar doesn't
>like this.
>
>So I thought "use a for loop!"  And I tried this:
>
>for i in `ls -1` ; do unrar x "$i" ; done
>
>But that didn't quite yield what I was after as it did weird things in
>the presence of filenames with spaces in them... and yes, these files
>have spaces in the names.  So what next?
>
>bash's "read" should be able to read a line into a variable and handle
>spaces just fine!  So I did this:
>
>ls -1 | for i in read ; do unrar x "$i" ; done
>
>This also had problems.
>
>Finally I did a little googling and found this:
>
>ls | while read f ; do unrar x "$f" ; done
>
>The while loop worked better than the for loop.  I am unsure why that is
>the case exactly but I am sure Chris will be able to offer a better
>analysis of the problem and the solutions.  But this technique is rather
>useful so I thought I would share.
>
>_______________________________________________
>http://www.ntlug.org/mailman/listinfo/discuss
>
>
>  
>
Perhaps the -l option in the first two attempts is a problem.  The data 
other than the filename might confuse unrar.

Stuart Yarus





More information about the Discuss mailing list