[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Bash globbing files only?

On 30Jan2007 15:24, Jacques B. <jjrboucher gmail com> wrote:
| >>   files=
| >>   for f in *
| >>   do [ -f "$f" ] && files="$files $f"
| >>   done
| >>   ... do stuff with $files ...
| >>
| >> If you've got to deal with filenames with whitespace in them you need
| >> to be trickier.
| I like how this works.  But you are right, it does cause a problem for
| filenames with spaces.  As far as cpu time (preceding the command with
| "time" to get same), we are only talking a few 1/100th of a second
| difference with the find command.

No. For _one_ run the cost is small. If something calls this code many
times, find is MANY MANY times more costly that an in-shell forkless
piece of code.

| The find command is more robust as
| it will properly deal with filenames with spaces.  Not to mention find
| will also yield hidden files (i.e. .file) whereas the above won't.

This depends what you want. But yes. But you can do this:

  for f in .* *
    case "$f" in . | .. ) continue ;; esac

which gets it all.
Cameron Simpson <cs zip com au> DoD#743

The word is not the thing.
The map is not the territory.
The symbol is not the thing symbolized.  - S.I. Hayakawa

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]