Ash*_*air 13 bash find filenames
给定一个嵌套目录,我想列出所有扩展名为.tif
, .TIF
, .tiff
, 的tif 文件.TIFF
。
目前我正在使用
find . -type f -iname *.TIF -print ; find . -type f -iname *.TIFF -print;
Run Code Online (Sandbox Code Playgroud)
使用-iname
允许我不区分大小写,但它会遍历目录两次以获取带有.tif
和 的文件.tiff
。有一个更好的方法吗?也许用大括号扩展?
为什么不*.tif*
呢?
在某些情况下,我的目录可能有带有.tif.aux.xml
tiff扩展名的辅助文件。我想忽略这些。
Ste*_*itt 35
find
支持“或”析取,-o
:
find . -type f \( -iname \*.tif -o -iname \*.tiff \)
Run Code Online (Sandbox Code Playgroud)
这将列出名称与*.tif
或匹配的所有文件*.tiff
,忽略大小写。
-print
是默认操作,因此无需在此处指定。*
, (
, 和)
被转义,因此它们对 shell 失去意义。
Ora*_*Dog 34
比 using 更短-o
,请改用正则表达式
find . -type f -iregex '.*\.tiff?'
Run Code Online (Sandbox Code Playgroud)
大括号扩展不是glob 匹配的一部分,因此不能与-(i)name
.