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

Re: bash, grep, and regular expressions



Kevin Mark wrote:
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

Hey Kevin,

I realize that "^..." will immediately look to the first of the line. That's the ^ function. Someone else here answered the question for me. A . is not an alphnumeric character and \< is tied to alphanumeric characters only so it would never recognize it. That's why it grep would never recognize . as the beginning of a word. Makes perfect sense to me.

Thanks for all your help.



Reply to: