problems using ls with for_in (SH)

Dan Nelson dnelson at allantgroup.com
Thu Nov 8 20:53:16 PST 2007


In the last episode (Nov 08), Sdvtaker said:
> Im trying to get a file with all the md5 hashes of one directory. My
> initial script was this:
>
> #!/bin/sh
> for file in $(ls)
> do
>        echo $file
>        md5 $file
> done
> 
> The problem is with the file names who contains "whitespaces" becouse
> the for_in passed each word as one iteration and not the full
> filename, I'd tried using -B in ls, but doesnt help.

There's no need to call ls at all.  The shell can expand wildcards just
fine by itself:

 for file in * 
 do
 	echo $file
 	md5 $file
 done

but in your case, since md5 can take multiple filenames on its
commandline and prints the filename in its output:

 md5 *

will suffice.

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list