我需要从目录(gif,png,jpg,jpeg)中找到所有图像文件.
find /path/to/ -name "*.jpg" > log
Run Code Online (Sandbox Code Playgroud)
如何修改此字符串以查找不仅仅是.jpg文件?
Pau*_*ce. 178
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
Run Code Online (Sandbox Code Playgroud)
Jos*_*seK 133
find /path/to/ -iname '*.gif' -o -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg'
Run Code Online (Sandbox Code Playgroud)
将工作.可能会有更优雅的方式.
tbo*_*e12 24
find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log
这样-E
可以避免在正则表达式中逃脱parens和pipe.
unu*_*tbu 11
find /path/to/ -type f -print0 | xargs -0 file | grep -i image
Run Code Online (Sandbox Code Playgroud)
这使用该file
命令尝试识别文件的类型,无论文件名(或扩展名)如何.
如果/path/to
或文件名包含字符串image
,则上述内容可能会返回虚假命中.在那种情况下,我建议
cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
Run Code Online (Sandbox Code Playgroud)
在 Mac OS 上使用
find -E packages -regex ".*\.(jpg|gif|png|jpeg)"
Run Code Online (Sandbox Code Playgroud)
find /path -type f \( -iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \)
Run Code Online (Sandbox Code Playgroud)
小智 6
作为@Dennis Williamson上面的回答的补充,如果你想让相同的正则表达式对文件扩展名不区分大小写,请使用-iregex:
find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
Run Code Online (Sandbox Code Playgroud)