For finding a specific file type, simply use the 'type:' command, followed by the file extension. For example, you can find . docx files by searching 'type: . docx'.
The grep command searches through the file, looking for matches to the pattern specified. To use it type grep , then the pattern we're searching for and finally the name of the file (or files) we're searching in. The output is the three lines in the file that contain the letters 'not'.
Why not:
ls *.{mp3,exe,mp4}
I'm not sure where I learned it - but I've been using this.
egrep
-- extended grep -- will help here
ls | egrep '\.mp4$|\.mp3$|\.exe$'
should do the job.
Use regular expressions with find
:
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\n'
If you're piping the filenames:
find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\0' | xargs -0 dosomething
This protects filenames that contain spaces or newlines.
OS X find
only supports alternation when the -E
(enhanced) option is used.
find -E . -regex '.*\.(mp3|mp4|exe)'
the easiest way is to just use ls
ls *.mp4 *.mp3 *.exe
Just in case: why don't you use find
?
find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
No need for grep. Shell wildcards will do the trick.
ls *.mp4 *.mp3 *.exe
If you have run
shopt -s nullglob
then unmatched globs will be removed altogether and not be left on the command line unexpanded.
If you want case-insensitive globbing (so *.mp3 will match foo.MP3):
shopt -s nocaseglob
In case you are still looking for an alternate solution:
ls | grep -i -e '\\.tcl$' -e '\\.exe$' -e '\\.mp4$'
Feel free to add more -e flags if needed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With