用了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個*號命令行