Bash globbing files only?

David G. Miller dave at davenjudy.org
Mon Jan 29 20:30:35 UTC 2007


Daniel Qarras <dqarras at yahoo.com> wrote:

> with Bash one can list directories (excluding dot dirs) like this:
> > > 
> > > ls [^.]*/
> > > 
> > > How can I list files instead of directories with Bash? I thought
>   
> > this
>   
>> > > would be trivial but I can't find a solution anywhere.
>>     
> > 
> > I don't think that it can be done with bash, but if you don't mind
> > switching to zsh -- another extended version of the Bourne shell --
> > it does become trivial:
> > 
> >     ~% ls *(.)  # list only plain files
> >     ~% ls *(/)  # list only directories
> >     ~% ls *(*)  # list only executable files
>   
>
> Yes, I am painfully aware of the power of zsh  :)  But in this case I
> need to do my script with bash and it seems that although globbing for
> directories is trivial ( */ ) there is no similar pattern to match
> files. Oh, well, I guess I'll need to waste some CPU cycles and launch
> find everytime I need to know file names in the current directory.
>
> Thanks.
How about:

ls -dF ./.[^.]*/ ./*/
./.gconf//   ./.gnome2//          ./.kde//  ./.vnc//
./.gconfd//  ./.gnome2_private//  ./mail//

The extra trailing slash is a little untidy but this shouldn't be too 
hard to deal with in a shell script.  Without the globbing the directory 
looks like:

ls -aF
./               .gnome2/             .tcshrc       .xauthipFozN  
.xauthPzlpUy
../              .gnome2_private/     tuneSkge.sh*  .xauthIS8EHj  
.xauthqjlydy
.addressbook     install.log          .vnc/         .xauthk767SX  
.xauthS6Fe7J
.addressbook.lu  install.log.syslog   .xauth3cMVlS  .xauthKGKdHN  
.xauthVVWsxU
anaconda-ks.cfg  .kde/                .xauth63RXVT  .xauthKTeKNJ  
.xauthxDbAPA
.bash_history    .lesshst             .xauth94YA7P  .xauthM83ZuG  
.xauthydqF9q
.bash_logout     local.mod            .xautha7i7Cq  .xauthmNPIZ6  
.xauthYh5g1e
.bash_profile    local.te             .xauthAMVrYt  .xauthmoSEQs  
.xauthYVZ3d9
.bashrc          mail/                .xauthBPKmdK  .xauthnGzy76  
.xauthz1gsvS
.cshrc           .pinerc              .xauthdcbhGf  .xauthoe3Llk  
.xauthZpCinp
.gconf/          .recently-used.xbel  .xauthf90gtu  .xauthOhkaXl  
.xauthZpuD2k
.gconfd/         scsrun.log           .xauthGuEyXV  .xauthpGDShA


Cheers,
Dave

-- 
Politics, n. Strife of interests masquerading as a contest of principles.
-- Ambrose Bierce




More information about the fedora-list mailing list