--- name: filesystem description: "高级文件系统操作,用于列出文件、搜索内容、批量处理和目录分析。支持递归搜索、文件类型过滤、大小分析和批量操作如复制/移动/删除。在需要列出目录内容、按名称或内容搜索文件、分析目录结构、执行批量文件操作或分析文件大小和分布时使用。" --- # Filesystem Operations 文件系统操作工具,提供目录列表、内容搜索、批量处理和目录分析功能。 ## 快速开始 ### 列出目录 ```bash # 列出当前目录 ls -la # 递归列出目录树 find . -type f -name "*.md" | head -20 # 按类型过滤 find . -type f \( -name "*.md" -o -name "*.txt" \) ``` ### 搜索文件 ```bash # 按名称搜索 find . -name "*keyword*" # 按内容搜索 grep -r "keyword" . --include="*.md" # 不区分大小写搜索 grep -ri "keyword" . --include="*.md" ``` ### 分析目录 ```bash # 统计文件类型 find . -type f -name "*.md" | wc -l # 查看目录大小 du -sh . # 找出最大文件 find . -type f -exec ls -lh {} \; | sort -k5 -h | head -10 ``` --- ## 核心功能 ### 1. 目录列表 **基础列表**: ```bash ls -la # 详细列表 ls -lh # 人类可读大小 ls -lt # 按修改时间排序 ls -R # 递归列表 ``` **高级列表**: ```bash # 列出特定类型 find . -type f -name "*.md" # 按深度列出 find . -maxdepth 2 -type f # 排除特定目录 find . -type f -not -path "*/node_modules/*" ``` --- ### 2. 文件搜索 **按名称搜索**: ```bash # 精确匹配 find . -name "filename.md" # 模式匹配 find . -name "*pattern*" # 大小写不敏感 find . -iname "*pattern*" ``` **按内容搜索**: ```bash # 基础搜索 grep -r "keyword" . # 包含行号 grep -rn "keyword" . # 只搜索特定文件 grep -r "keyword" . --include="*.md" # 排除目录 grep -r "keyword" . --exclude-dir=node_modules ``` **正则表达式搜索**: ```bash # 使用正则 grep -r "^## " . --include="*.md" # 多个关键词 grep -r "key1\|key2" . # 行首/行尾 grep -r "^关键词" . grep -r "关键词$" . ``` --- ### 3. 批量操作 **批量复制**: ```bash # 复制特定类型 find . -name "*.md" -exec cp {} backup/ \; # 复制到多个位置 for file in *.md; do cp "$file" dir1/ && cp "$file" dir2/; done ``` **批量移动**: ```bash # 移动特定文件 find . -name "*.log" -exec mv {} logs/ \; # 按条件移动 find . -type f -size +1M -exec mv {} large/ \; ``` **批量删除**: ```bash # 删除特定类型 find . -name "*.tmp" -delete # 删除空目录 find . -type d -empty -delete # 删除旧文件 find . -type f -mtime +30 -delete ``` **批量重命名**: ```bash # 使用 rename 命令 rename 's/old/new/' *.md # 添加前缀 for file in *.md; do mv "$file" "prefix_$file"; done ``` --- ### 4. 目录分析 **大小分析**: ```bash # 总大小 du -sh . # 各目录大小 du -h --max-depth=1 . | sort -hr # 最大的文件 find . -type f -exec ls -lh {} \; | sort -k5 -hr | head -10 ``` **文件类型统计**: ```bash # 按扩展名统计 find . -type f -name "*.md" | wc -l # 各类型统计 find . -type f -name "*.*" | sed 's/.*\.//' | sort | uniq -c ``` **目录结构分析**: ```bash # 目录树 tree -L 2 # 递归深度 find . -type d | wc -l # 文件分布 find . -type f | cut -d/ -f1-2 | sort | uniq -c ``` --- ### 5. 文件信息查询 **文件详情**: ```bash # 完整信息 stat filename # 只看大小 ls -lh filename # 只看时间 ls -lt filename ``` **文件内容预览**: ```bash # 头部 head -20 filename # 尾部 tail -20 filename # 随机行 shuf -n 10 filename # 字符数 wc -c filename # 行数 wc -l filename ``` --- ## 实用工具 ### tree 命令 ```bash # 安装 brew install tree # 使用 tree -L 2 -I 'node_modules|__pycache__' ``` ### fd 命令(快速查找) ```bash # 安装 brew install fd # 使用 fd "pattern" /path fd -e md . # 只找 md 文件 fd -t f . # 只找文件 ``` ### ripgrep 命令(快速搜索) ```bash # 安装 brew install ripgrep # 使用 rg "keyword" . rg -t md "keyword" . rg -i "keyword" . # 不区分大小写 rg --type md "pattern" . ``` --- ## 最佳实践 ### 1. 搜索优化 - 使用 `fd` 或 `ripgrep` 替代 `find` 和 `grep`(更快) - 先缩小搜索范围,再进行深度搜索 - 使用文件类型过滤减少搜索时间 ### 2. 批量操作安全 - 操作前先用 `--dry-run` 查看会发生什么 - 批量删除前先列出文件确认 - 重要操作前先备份 ### 3. 目录分析 - 使用 `-max-depth` 限制递归深度 - 使用 `-size` 过滤大文件 - 使用 `-mtime` 按时间筛选 --- ## 常见任务 ### 查找并处理 Markdown 文件 ```bash # 查找所有 md 文件 find . -name "*.md" -type f # 统计 md 文件数量 find . -name "*.md" | wc -l # 列出最大的 md 文件 find . -name "*.md" -exec ls -lh {} \; | sort -k5 -hr | head -5 ``` ### 搜索并替换内容 ```bash # 搜索所有匹配项 grep -rn "old_text" . --include="*.md" # 替换(使用 sed) find . -name "*.md" -exec sed -i '' 's/old_text/new_text/g' {} \; ``` ### 清理临时文件 ```bash # 删除 .tmp 文件 find . -name "*.tmp" -delete # 删除空目录 find . -type d -empty -delete # 删除 30 天前的日志 find . -name "*.log" -mtime +30 -delete ``` --- ## 安全提醒 ⚠️ **批量操作前先确认**: - 列出要操作的文件 - 确认不会误删重要文件 - 考虑先备份 ⚠️ **删除操作不可逆**: - `rm` 删除后无法恢复 - 大批量删除前仔细检查 - 考虑使用 `rm -i` 交互式删除 ⚠️ **权限注意**: - 某些操作可能需要 sudo - 系统目录操作要谨慎 - 考虑文件权限问题