I just want to get the files from the current dir and only output .mp4 .mp3 .exe files nothing else. So I thought I could just do this:
ls | grep \\.mp4$ | g
Here is one example that worked for me.
find <mainfolder path> -name '*myfiles.java' | xargs -n 1 basename
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)'
it is easy try to use this command :
ls | grep \.txt$ && ls | grep \.exe
ls | grep "\.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