如何筛选文件名第21位字符为1的所有文件
实现方案
以下是不同环境下筛选文件名第21位(从左到右从1开始计数)为1的文件的方法:
Linux/macOS 终端
- 列出当前目录下符合要求的文件:
ls -1 | grep -E '^.{20}1'
- 递归扫描当前目录及所有子目录的符合要求的文件:
find . -type f -name "????????????????????1*"
原理:正则^.{20}1表示匹配字符串前20位为任意字符,第21位为1,完全匹配筛选规则。
Windows PowerShell
- 列出当前目录下符合要求的文件:
Get-ChildItem | Where-Object { $_.Name.Length -ge 21 -and $_.Name[20] -eq '1' }
- 递归扫描所有子目录的符合要求的文件:
Get-ChildItem -Recurse | Where-Object { $_.Name.Length -ge 21 -and $_.Name[20] -eq '1' }
注意:PowerShell中字符串索引从0开始,因此第21位对应索引值20,额外增加长度判断是为了避免短文件名索引越界报错。
跨平台Python脚本
如果需要集成到批量处理逻辑中,可以使用以下通用Python代码:
import os # 替换为你需要扫描的目录路径 scan_path = "./" for root, dirs, files in os.walk(scan_path): for filename in files: if len(filename) >= 21 and filename[20] == "1": # 输出文件的完整路径,不需要可以直接打印filename print(os.path.join(root, filename))
内容的提问来源于stack exchange,提问作者B S
相关产品推荐
相关产品推荐

