Go Search Tools 是一款基于Go语言开发的强大命令行文件搜索工具。它支持按文件名和文件内容进行搜索,具备灵活的过滤选项和高效的搜索性能,能够帮助开发者、系统管理员等快速定位所需文件。
- 文件名搜索:支持使用通配符
*和?进行匹配,可通过--ignore-case参数忽略大小写,实现对文件名的精准或模糊查找。 - 文件内容搜索:基于字符串匹配查找文件内容,支持多线程并行搜索(可通过
--workers参数调整并发数),并提供超时控制(--timeout参数防止长时间搜索)。
- 目录与深度控制:可递归搜索子目录(默认开启),并通过
--max-depth参数限制最大递归深度;也能通过--exclude-dir参数排除特定目录。 - 文件扩展名过滤:支持通过
--include-ext参数指定只搜索特定扩展名的文件,或通过--exclude-ext参数排除特定扩展名的文件。
- 彩色输出:在ANSI终端中提供彩色输出,清晰区分不同类型的信息,增强可读性。
- 进度条显示:可通过
--progress参数选择是否显示进度条,实时掌握搜索进度。 - 人性化格式:对文件大小和时间进行人性化格式处理,便于查看。
确保已安装Go环境(版本需在1.20及以上),在终端执行以下命令:
go install github.com/Lingbou/go-search-tools@latest- 克隆项目仓库:
git clone https://github.com/Lingbou/go-search-tools.git- 进入项目目录:
cd go-search-tools- 构建项目:
go build -o gost或者
make build构建成功后,会在当前目录生成名为 gost 的可执行文件(在Windows下为 gost.exe )。
- 搜索当前目录及其子目录下所有的go文件:
gost name --include-ext .go "*.go"- 在指定目录递归搜索,但只检查深度不超过3的目录,查找文件名包含config的文件:
gost name --path /指定路径 --max-depth 3 "config.*"- 在当前目录及其子目录中,使用8个线程并行搜索包含error字符串的文件,设置搜索超时时间为30秒:
gost content --workers 8 --timeout 30s "error"- 在指定目录搜索文件内容,排除node_modules目录和.jpg文件,查找包含critical bug字符串的文件:
gost content --path /指定路径 --exclude-dir node_modules --exclude-ext .jpg "critical bug"非常欢迎大家为Go Search Tools贡献代码!如果你想参与项目开发,可以参考以下步骤:
- Fork本仓库到你自己的GitHub账号。
- 克隆你Fork后的仓库到本地:
git clone https://github.com/Lingbou/go-search-tools.git- 创建一个新的分支:
git checkout -b [分支名称]- 在新分支上进行代码修改和功能开发。请确保你的代码遵循项目现有的代码风格和规范。
- 完成修改后,提交你的代码并推送到远程仓库:
git add .
git commit -m "message"
git push origin [分支名称]- 回到GitHub,在你的仓库页面发起Pull Request,详细描述你的改动内容和目的。我们会尽快对你的PR进行审核和反馈。
在贡献代码之前,建议先阅读项目的 行为准则 ,确保你的贡献符合项目的整体理念和社区规范。
本项目采用 MIT许可证 ,详情请查看项目根目录下的 LICENSE 文件。这意味着你可以自由地使用、修改和分发本项目代码,只需在衍生作品中保留原许可证和版权声明。