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

Re: bash, grep, and regular expressions



On Fri, Feb 18, 2005 at 04:12:16AM -0800, Freddy Freeloader wrote:
> Kevin Mark wrote:
> >On Thu, Feb 17, 2005 at 08:49:41PM -0800, Freddy Freeloader wrote:
> >
> >>Glenn English wrote:
> >>
> >>>On Thu, 2005-02-17 at 16:08 -0800, Freddy Freeloader wrote:
> >>>
> >>>
> >>>
> >>>>What I've been attempting to do with grep 
> >>>>and regular expressions is list only non-hidden directories and/or 
> >>>>files.  I am unable to come up with an expression that will elimate 
> >>>>hidden files and return non-hidden files at the same time.
> >>>>
> >>>>ls -al | grep -v ' \.\<[a-zA-Z0-9].*\>' # returns everything
> >>>>
> >>>>ls | grep -e '\<[^.][[:alnum:]]'  # returns everything
> >>>>
> >>>>ls | grep -e '\<[.][[:alnum:]]'  # returns an empty set
> >>>>
> >>>
> >>>
> >>>ls -al | grep -v ' \.'   seems to work here???
> >>>
> >>
> >>I thought about this a little more and from it's behavior of filtering 
> >>out files with extensions I'd say it's not filtering based on the . that 
> >>designates whether a file or directory is hidden.
> >>
> >>I have a few files without extensions and it returns those, but any file 
> >>with an extension is filtered out.  So, this isn't really resovling the 
> >>problem I'm having.
> >>
> >>
> >
> >Hi Freddy,
> >find -maxdepth 1 |grep -v "^\./\." 
> >(remove files that start with ./.)
> >this find files and directories in the current directory that are not
> >hidden. Hidden files and directories start with .
> >Cheers,
> >Kev
> 
> Hi Kevin,
> 
> This returns the correct files ok.  However, it's not too much different 
> than ls -a | grep -v '^\.' which I can make work too.  What I'm really 
> trying to do is figure out how to parse the beginning of the file name 
> column in the long format, and I just can't come up with a way to do 
> that on my machines.  I've been given expressions that do it on other 
> machines, but I have yet to find one that will work on my machines.
> 
> I just can't see why grep can't recognize the beginning of the word in 
> the file name column in the long format.  Why will it recognize the . in 
> short format at the beginning of a line, but not in the long format at 
> the beginning of a word?  I can parse the beginning of words in any 
> other situation I've come across but not in in ls -al.
Hi Freddy,
ls -a just returns the file names and thus the first column will contain
the start of the filename. ls -al show the permission in the first
column and thus the "^..." will be matched against it and not the
filename.
-Kev
-- 
counter.li.org #238656 -- goto counter.li.org and be counted!

        (__)
        (oo)
  /------\/
 / |    ||
*  /\---/\
   ~~   ~~
...."Have you mooed today?"...

Attachment: signature.asc
Description: Digital signature


Reply to: