在批处理脚本中搜索名称与模式匹配的文件

时间:2014-02-04 10:27:40

标签: batch-file find

我想从所有目录中获取文件列表。有这样的层次结构:

all_directories/dir_cc
all_directories/dir_dd

all_directories/dir_cc/swt/file{1..n}.txt
all_directories/dir_cc/swd/file{1..n}.txt

all_directories/dir_dd/swt/file{1..n}.txt
all_directories/dir_dd/swd/file{1..n}.txt

我需要以递归方式获取包含swt目录中文件的列表。这就是我想要获得的:

all_directories/dir_cc/swt/file{1..n}.txt
all_directories/dir_dd/swt/file{1..n}.txt

这是一个例子,但我的层次结构要大得多 在linux中我这样做:

find all_directories -regex ".*/dir_.*/swt

在windows批处理中,我怎么能做同样的事情,或者通过迭代来进行迭代? 谢谢。

2 个答案:

答案 0 :(得分:0)

dir /a-d /s /b "c:\all_directories" | findstr /i /r /c:"\\dir_[^\\]*\\swt\\."

生成文件的递归列表并过滤以仅获取所需的

用于for命令

for /f "tokens=*" %%f in (
    'dir /a-d /s /b "c:\all_directories" ^| findstr /i /r /c:"\\dir_[^\\]*\\swt\\."'
) do (
    echo %%f
)

答案 1 :(得分:0)

这是另一种选择:它假设所有文件{*} .txt文件在*部分都有数字。

dir "all_directories\file{*}.txt" /b /s /a-d|find /i "\swt\file"