如何用glob来匹配所有子目录的文件
时间: 2024-02-02 11:04:17 浏览: 43
要使用glob命令来匹配子目录中的文件,可以结合使用递归函数和glob命令。一个简单的递归函数的实现如下:
```tcl
proc find_files {dir pattern} {
set files [glob -nocomplain -- $dir/$pattern]
# 递归查找子目录中的文件
foreach subdir [glob -nocomplain -type d -- $dir/*/] {
lappend files {*}[find_files $subdir $pattern]
}
return $files
}
```
这个函数的参数包括目录名和文件名匹配模式,返回一个符合条件的文件名列表。在函数内部,首先使用glob命令查找当前目录下符合条件的文件名,然后使用foreach循环递归查找子目录中的文件,将所有符合条件的文件名添加到文件列表中。最后返回文件列表。
使用这个函数可以方便地查找所有子目录中符合条件的文件,例如:
```tcl
set files [find_files /path/to/dir *.txt]
```
这个命令将会返回/path/to/dir目录及其所有子目录中所有扩展名为txt的文件名列表。
相关问题
python 用pathlib.path.glob查找匹配文件,包括子目录下面的文件
非常好的问题!使用pathlib中的glob方法可以实现查找匹配文件,包括子目录下的文件。下面是一个简单的例子:
```python
from pathlib import Path
# 查找当前目录及其所有子目录下扩展名为.txt的文件
files = Path('.').rglob('*.txt')
for file in files:
print(file)
```
这个例子会输出所有扩展名为.txt的文件路径,包括当前目录及其所有子目录下的文件。希望能对你有所帮助!
glob匹配的时候,只匹配文件路径,不匹配文件夹路径
这句话有点模糊,可以具体解释一下。
glob是Python中一个用于文件操作的模块,可以通过指定特定的模式来匹配文件路径。比如:
```python
import glob
# 匹配当前目录下所有的txt文件
txt_files = glob.glob("*.txt")
```
这里的`*.txt`就是用于匹配文件路径的模式,它只会匹配当前目录下的所有txt文件,而不会匹配文件夹路径。
如果要匹配文件夹路径,可以使用`**`来匹配任意层级的文件夹,比如:
```python
import glob
# 匹配当前目录下所有的文件夹
dir_paths = glob.glob("**/", recursive=True)
```
这里的`**/`就是用于匹配文件夹路径的模式,它会匹配任意层级的文件夹路径。需要注意的是,这里要设置`recursive=True`参数才能递归匹配子文件夹。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)