{"id":21834501,"url":"https://github.com/themyle/gofs","last_synced_at":"2025-07-18T16:34:17.512Z","repository":{"id":226420667,"uuid":"742706679","full_name":"theMyle/goFS","owner":"theMyle","description":"Go File Sorter - A fast concurrent file sorter CLI tool","archived":false,"fork":false,"pushed_at":"2024-09-14T12:40:14.000Z","size":6315,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T09:42:52.244Z","etag":null,"topics":["cli","cobra","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theMyle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-13T05:48:26.000Z","updated_at":"2024-09-14T12:40:18.000Z","dependencies_parsed_at":"2024-11-27T20:11:49.627Z","dependency_job_id":"53a7572d-0656-4d72-9174-17d3c0ce44b2","html_url":"https://github.com/theMyle/goFS","commit_stats":null,"previous_names":["themyle/gofilesorter"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theMyle%2FgoFS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theMyle%2FgoFS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theMyle%2FgoFS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theMyle%2FgoFS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theMyle","download_url":"https://codeload.github.com/theMyle/goFS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244811375,"owners_count":20514276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","cobra","golang"],"created_at":"2024-11-27T20:11:36.181Z","updated_at":"2025-07-18T16:34:17.500Z","avatar_url":"https://github.com/theMyle.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚡️ goFS – Go File Sorter\n\n**goFS** (Go File Sorter) is a fast, concurrent CLI tool written in Go for sorting, unsorting, and filtering files in large directories. Built as a learning project, it demonstrates how concurrency can accelerate I/O-heavy tasks — though, as the project revealed, most file operations are I/O-bound, meaning performance is ultimately limited by disk read/write speeds rather than CPU power.\n\nThrough this project, I deepened my understanding of:\n- CLI's\n- Go's concurrency model (goroutines, channels, sync)\n- How caching impacts file system performance\n- Real-world trade-offs between CPU-bound vs I/O-bound task\n\n---\n\n## 📦 Features\n\n- **Sort** files into subfolders based on file type\n- **Unsort** files by restoring them to their original (flattened) structure\n- **Filter** files by extension, with the option to move or copy them\n- Built with **Golang** and the **Cobra** CLI library\n- Concurrent file operations for fast performance\n\n---\n\n## CLI \n\n```\ngoFS - A fast concurrent file sorter made with golang\n\nUsage:\n  goFS [command] [flag] [directory] [args]\n  goFS [command]\n\nExamples:\n  goFS sort ./Downloads\n  goFS unsort ./Documents\n  goFS filter --copy ./Documents exe pdf doc\n\nAvailable Commands:\n  completion  Generate the autocompletion script for the specified shell\n  filter      goFS - Filters the chosen directory\n  help        Help about any command\n  sort        goFS - Sorts the chosen directory\n  unsort      goFS - Unsorts the chosen directory\n\nFlags:\n  -h, --help   help for goFS\n\nUse \"goFS [command] --help\" for more information about a command.\n```\n\n---\n\n## Sample Usage\n\n```\n--- SORTING ---\n\nPARSING FILES   [/]     -- Time: [ 2.09s ] -- Files: [ 19483 ] -- Folders: [ 3495 ] --\nMOVING FILES    [/]     -- Time: [ 14.10s ]\nCLEAN-UP        [/]     -- Time: [ 0.83s ]\n\nPress Enter to exit...\n_______________________________________________________________\n\n--- UNSORTING ---\n\nPARSING FILES   [/]     -- Time: [ 2.88s ] -- Files: [ 19483 ] -- Folders: [ 3532 ] --\nMOVING FILES    [/]     -- Time: [ 14.89s ]\nCLEAN-UP        [/]     -- Time: [ 0.61s ]\n\nPress Enter to exit...\n_______________________________________________________________\n\n-- FILTERING --\n\nPARSING FILES   [/]     -- Time: [ 3.28s ] -- Files: [ 26606 ]\nCOPYING FILES   [/]     -- Time: [ 3.94s ]\nCLEAN-UP        [/]     -- Time: [ 0.46s ]\n\nPress Enter to exit...\n_______________________________________________________________\n\n-- FILTERING --\n\nPARSING FILES   [/]     -- Time: [ 2.82s ] -- Files: [ 17848 ]\nMOVING FILES    [/]     -- Time: [ 7.48s ]\nCLEAN-UP        [/]     -- Time: [ 0.43s ]\n\nPress Enter to exit...\n_______________________________________________________________\n```\n\n---\n\n## Installation\n\nIf you have go compiler installed \n\n```bash\ngo install github.com/theMyle/goFS@latest\n```\n\nYou can now launch the app by simply typing `goFS` in the commandline.\n\nOr just download the precompiled binary.\n\n---\n\n## Notes\n\n- If a file with same name already exists in the destination path, the file will not be moved and will therfore stay there.\n- This project is for on **learning purposes only**. Usable but not recommended when working with important files.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemyle%2Fgofs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthemyle%2Fgofs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthemyle%2Fgofs/lists"}