List files with certain extensions with ls and grep

后端 未结 12 616
悲&欢浪女
悲&欢浪女 2020-12-02 04:09

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         


        
相关标签:
12条回答
  • 2020-12-02 04:35

    Here is one example that worked for me.

    find <mainfolder path> -name '*myfiles.java' | xargs -n 1 basename
    
    0 讨论(0)
  • 2020-12-02 04:37

    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)'
    
    0 讨论(0)
  • 2020-12-02 04:37

    it is easy try to use this command :

    ls | grep \.txt$ && ls | grep \.exe
    
    0 讨论(0)
  • 2020-12-02 04:39
    ls | grep "\.mp4$
    \.mp3$
    \.exe$"
    
    0 讨论(0)
  • 2020-12-02 04:47

    Just in case: why don't you use find?

    find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
    
    0 讨论(0)
  • 2020-12-02 04:48

    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
    
    0 讨论(0)
提交回复
热议问题