Sponsored Content
Top Forums UNIX for Dummies Questions & Answers [Solved] Wildcards used in find, ls and grep commands Post 302730587 by jim mcnamara on Tuesday 13th of November 2012 09:00:10 AM
Old 11-13-2012
I will try to clear up one thing for you.

The shell does things to certain characters you type. * and ? or ??? or ?????? are all expanded into filenames. BEFORE the command actually runs. This is called globbing.

? expands into all files named with a single character like q
??? expands into all three character file names
?????? all 6 character file names
* expands into all file names in the current directory

The characters are called metacharacters because they do not behave like most things you can type.

You turn off globbing by surrounding the phrase or symbol with the single tic ' or the double quote "

Next.
There are other metacharacters - $ is the prefix for asking the shell to find the value of a variable. Double quotes play unfairly. They let the shell work on all of the $ metacharacters inside double quotes. Not so inside single ticks (or single quotes).

So. grep uses regular expressions. *,?, and $ are used in regexes all the time.
You use single tics to block them off from the shell's evil influence. Things would work out fine with grep "pattern" if the pattern had no $ int it. In fact
Code:
grep me myfile

works great to find the string==me. No quotes at all.
Code:
grep "me and you" myfile

needs double quotes to me and you to force it into a SINGLE pattern, again turning off the evil influence of the shell which would otherwise make it TWO patterns. And confuse the heck out of grep.
Code:
 grep -F  "*" somefilename

uses -F to turn off regular expressions for grep.
This is how you look for a metacharacter in a file. But you still have to stop the evil influence of the shell. " " do that for the * character. But not the $ character.

' ' single tics make the stuff inside completely immune to the shell.
" " gives partial immunity to to the shell.

Finally, since all ls cares about is file names, letting the shell mess with metacharacters is cool.

Last edited by vbe; 11-13-2012 at 10:53 AM.. Reason: missing /...
This User Gave Thanks to jim mcnamara For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

grep and wildcards

Hi guys, a small problem today, I'm grepping a log file containing lines like this below: Mar 09 16:04:00 blabla Mar 09 16:04:02 blabla Mar 09 16:04:05 blabla Mar 09 16:04:15 blabla Mar 09 16:05:06 blabla Mar 09 16:05:23 blabla Mar 09 16:05:25 blabla ... in this file I'm grepping... (5 Replies)
Discussion started by: Lomic
5 Replies

2. UNIX for Dummies Questions & Answers

find and grep commands

I'm having trouble with the following commands i. count the number of lines which end in a 4 letter word grep '{4\}$' bfile <<seems to print out everything abc abc abcd joe joe john bob bill gregory greg greg gregory the grep command prints out the lines with 4 letter words and the... (3 Replies)
Discussion started by: StrengthThaDon
3 Replies

3. UNIX for Dummies Questions & Answers

help with find & grep commands

Folks; First about find: when i run this: find . -name '*log*' -mtime +10 -print | sed 's+^\./++;s+/.*++' | sort -u i got list of log files but also get a directories (although directory names doesn't have "log" in it). How can i exclude the directory from the output of this find command? ... (2 Replies)
Discussion started by: moe2266
2 Replies

4. Shell Programming and Scripting

Perl - grep issue in filenames with wildcards

Hi I have 2 directories t1 and t2 with some files in it. I have to see whether the files present in t1 is also there in t2 or not. Currently, both the directories contain the same files as shown below: $ABC.TXT def.txt Now, when I run the below script, it tells def.txt is found,... (5 Replies)
Discussion started by: guruprasadpr
5 Replies

5. Homework & Coursework Questions

find grep sed commands homework

Use and complete the template provided. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: I have to make as home work several commands with gerp find and sed 2. Relevant commands, code, scripts, algorithms: FIND command -use command find... (8 Replies)
Discussion started by: ViruS89
8 Replies

6. Homework & Coursework Questions

Need help using find or locate with wildcards

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: List all files in ~c12100 directory beginning with "BOZO" that end with either "123" or "456" 2. Relevant... (3 Replies)
Discussion started by: ScarletRavin
3 Replies

7. Shell Programming and Scripting

Grep wildcards

Hi all I want to search for number in file presented with wildcard as shown below. cat file.txt 1405 1623 1415 ....... ....... How to search for the number 141526 for example? If the number exist print "Number 141526 exist" if no, print "The number not exist" Thank you in advance. (3 Replies)
Discussion started by: vasil
3 Replies

8. Shell Programming and Scripting

[Solved] Grep within find command

Platform: AIX 6.1/ksh Question1. I want to grep for the string "CUSTOM_PKMS" in all the files in server except those files with extensions .dbf , .ctl and .dmp I started running the following command but it is taking too long because there are lots of .dbf , .ctl and .dmp files in this... (6 Replies)
Discussion started by: John K
6 Replies

9. Shell Programming and Scripting

Grep multiple patterns that contain wildcards

job_count=`grep -e "The job called .* has finished | The job called .* is running" logfile.txt | wc -l` Any idea how to count those 2 patterns so i have a total count of the finished and running jobs from the log file? If i do either of the patterns its works okay but adding them together... (8 Replies)
Discussion started by: finn
8 Replies

10. UNIX for Dummies Questions & Answers

Find command and use of wildcards

greetings, below is the find command i am using for some filesystem maintenance: find /data/Engine \( -type d -name .snapshot -prune -o -type d -wholename "/data/Engine/*/CAE" \ -prune -o -type d -wholename "/data/Engine/*/CAD" -prune -o -name ".*.case" \)\ -mtime +365 -print0 -fls... (5 Replies)
Discussion started by: crimso
5 Replies
All times are GMT -4. The time now is 12:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy