Bash globbing files only?

Jacques B. jjrboucher at gmail.com
Mon Jan 29 14:30:19 UTC 2007


On 1/29/07, James Wilkinson <fedora at aprilcottage.co.uk> wrote:
> Daniel Qarras wrote:
> > I want just the files from the current directory, not from any subdir.
> > And I'd prefer some bash globbing if possible for performance/elegancy
> > reasons :)
>

The closest I could come up with was using
ls -Ap -I "pattern"

That caused directories to have / at the end of them. So I figured I
could use -I to ignore any filename ending with /.  However after a
few unsuccessfull variations I realized that the / is only displayed
at the end of directories therefore not part of the name. Which means
you cannot use a pattern to eliminate names ending in / (because the
name doesn't end with /, rather / is simply displayed after a
directory name).  Piping to grep would do it of course.

The find command with maxdepth and for type f is your best bet in my opinion.

If you come up with a way to do it from within ls I'd be interested in it.

Now lsattr comes close as well in that it lists files, but also
symbolic links to a directory.  But that produces the attributes along
with the file names.

Like John, I can see no way on how to do it with ls alone from within
bash. Clearly John has a solution for you using another shell so you
could call upon that shell interpreter.  But I don't see zsh on my
default FC6 install.

Jacques B.

Jacques B.




More information about the users mailing list