How to use find command to find all files with extensions from list?

后端 未结 9 1446
旧时难觅i
旧时难觅i 2020-12-04 05:45

I need to find all image files from directory (gif, png, jpg, jpeg).

find /path/to/ -name \"*.jpg\" > log

How to modify this string to f

相关标签:
9条回答
  • 2020-12-04 06:18

    in case files have no extension we can look for file mime type

    find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 ~ /audio|video|matroska|mpeg/) print $1 }'
    

    where (audio|video|matroska|mpeg) are mime types regex

    &if you want to delete them:

    find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 ~ /audio|video|matroska|mpeg/) print $1 }' | while read f ; do
      rm "$f"
    done
    

    or delete everything else but those extensions:

    find . -type f -exec file -i {} + | awk -F': +' '{ if ($2 !~ /audio|video|matroska|mpeg/) print $1 }' | while read f ; do
      rm "$f"
    done
    

    notice the !~ instead of ~

    0 讨论(0)
  • 2020-12-04 06:25
    find /path/to/  \( -iname '*.gif' -o -iname '*.jpg' \) -print0
    

    will work. There might be a more elegant way.

    0 讨论(0)
  • 2020-12-04 06:25
    find /path/to/ -type f -print0 | xargs -0 file | grep -i image
    

    This uses the file command to try to recognize the type of file, regardless of filename (or extension).

    If /path/to or a filename contains the string image, then the above may return bogus hits. In that case, I'd suggest

    cd /path/to
    find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
    
    0 讨论(0)
  • 2020-12-04 06:33

    find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log

    The -E saves you from having to escape the parens and pipes in your regex.

    0 讨论(0)
  • 2020-12-04 06:33

    In supplement to @Dennis Williamson 's response above, if you want the same regex to be case-insensitive to the file extensions, use -iregex :

    find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
    
    0 讨论(0)
  • 2020-12-04 06:33

    On Mac OS use

    find -E packages  -regex ".*\.(jpg|gif|png|jpeg)"
    
    0 讨论(0)
提交回复
热议问题