在路径中的任意位置查找具有特定文件夹名称的文件

Find files with a specific folder name anywhere in their path

我正在使用

find ./*/*/*/FOO/*/*/!(!(*.tif)|*v.tif) -type f

获取目录树中所有不以 v.tif 结尾的 tiff 文件。如何编辑命令以查找路径中带有 FOO anywhere 的文件?我遇到了 globstar,但它似乎在 mac 的默认值 bash 上不可用。

额外的问题:Windows prompt/Powershell 相当于什么?

对于 powershell

Get-ChildItem -Path <path> -Recurse -Filter *FOO*.tif -Exclude *v.tif

也可以使用它在目录名称中包含 FOO

Get-ChildItem -Path c:\ASB -Recurse -Filter *.tif -Exclude *v.tif -Include *FOO*

更通用的解决方案

 Get-ChildItem -Path c:\ASB -Recurse -Filter *.tif -Exclude *v.tif | Where-Object FullName -like *FOO*

要在其完整路径名中的任何位置添加 FOO

find . -type f -wholename "*FOO*"

另外以 .tif 结尾并排除 *v.tif:

find . -type f -wholename "*FOO*[^v].tif"

但是上面的排除了*FOO.tif的边缘情况,所以这样比较好:

find . -type f -wholename "*FOO*.tif" ! -name "*v.tif"

看起来您已经在使用 shoptextglob。添加 globstar.

shopt -s globstar

然后

find **/FOO/**/ -type f ! -name '*v.tif'

仅适用于 TIF

find **/FOO/**/* -type f -name '*.tif' ! -name '*v.tif'