用了Linux下的find命令,以为查找文件很方便,那么在windows下有没有相似的命令能够遍历目录并经过文件名找到文件呢?答案是有:windows
Windows下的 for /r
命令具备与Linux下 find
命令相似的功能,使用语法上相似:bash
find /r 目录名 %变量名 in (匹配模式1,匹配模式2) do 命令
匹配模式能够是通配相似于:markdown
*.jpg
:全部.jpg后缀的文件*test*
:全部名称中包含test的文件注意:
1. 匹配模式中至少带上1个*号
2. 匹配内容仅限于文件名,不会匹配目录名ui
若是仅是查找和输出文件名,do后面的命令能够用@echo %变量名
,即:spa
for /r 目录名 %i in (匹配模式1,匹配模式2) do @echo %i
# 将TestDir目录及全部子目录中全部的文件列举出来 C:\Users\cashey\Desktop>for /r TestDir %i in (*) do @echo %i C:\Users\cashey\Desktop\TestDir\b.jpg C:\Users\cashey\Desktop\TestDir\c.png C:\Users\cashey\Desktop\TestDir\doc\1.txt C:\Users\cashey\Desktop\TestDir\doc\2.txt C:\Users\cashey\Desktop\TestDir\src\test.py # 在TestDir目录及全部子目录中找出全部的txt文件 C:\Users\cashey\Desktop>for /r TestDir %i in (*.txt) do @echo %i C:\Users\cashey\Desktop\TestDir\doc\1.txt C:\Users\cashey\Desktop\TestDir\doc\2.txt # 在TestDir目录及全部子目录中找出全部的txt及jpg文件 C:\Users\cashey\Desktop>for /r TestDir %i in (*.txt,*.jpg) do @echo %i C:\Users\cashey\Desktop\TestDir\b.jpg C:\Users\cashey\Desktop\TestDir\doc\1.txt C:\Users\cashey\Desktop\TestDir\doc\2.txt # 在TestDir目录及全部子目录中找出全部文件名中包含test的文件 C:\Users\cashey\Desktop>for /r TestDir %i in (*test*) do @echo %i C:\Users\cashey\Desktop\TestDir\src\test.py
匹配模式中若是不带*号,并不会精确匹配文件名,而会输出全部子目录拼接上该匹配模式的结果,像下面这样:.net
# # 目录中事实上不包含任何名称为abc的文件 C:\Users\cashey\Desktop>for /r TestDir %i in (abc) do @echo %i C:\Users\cashey\Desktop\TestDir\abc C:\Users\cashey\Desktop\TestDir\doc\abc C:\Users\cashey\Desktop\TestDir\src\abc
上面这样的输出通常不是你预期的,模式里至少须要带上1个*号命令行