{"id":26159381,"url":"https://github.com/archsyscall/fstk","last_synced_at":"2026-04-18T16:35:31.398Z","repository":{"id":281677144,"uuid":"946063961","full_name":"archsyscall/fstk","owner":"archsyscall","description":"A modern file stack manager - the perfect place for your files and directories","archived":false,"fork":false,"pushed_at":"2025-03-10T15:01:03.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T15:38:44.806Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/archsyscall.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","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":"2025-03-10T14:54:20.000Z","updated_at":"2025-03-10T14:59:49.000Z","dependencies_parsed_at":"2025-03-10T15:39:24.664Z","dependency_job_id":"29b3f534-75a1-455e-8655-61a9d2faa602","html_url":"https://github.com/archsyscall/fstk","commit_stats":null,"previous_names":["archsyscall/fstk"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archsyscall%2Ffstk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archsyscall%2Ffstk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archsyscall%2Ffstk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/archsyscall%2Ffstk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/archsyscall","download_url":"https://codeload.github.com/archsyscall/fstk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243022037,"owners_count":20223123,"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":[],"created_at":"2025-03-11T11:22:06.122Z","updated_at":"2026-04-18T16:35:31.386Z","avatar_url":"https://github.com/archsyscall.png","language":"Rust","funding_links":[],"categories":["\u003ca name=\"file-handling\"\u003e\u003c/a\u003eFile and file system handling"],"sub_categories":[],"readme":"# fstk\n\n\u003e Stack-based file \u0026 directory manager: Modern \"cut/paste\" alternative to mv\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nfstk (File Stack) is a command-line utility that manages files and directories using a stack-based approach. **This tool, which essentially works like \"cut\" operations**, allows you to place files in a stack (cut) and retrieve them to any desired location (paste). Unlike the traditional file moving command (mv), fstk maintains a history of file locations. The core functionality of fstk is that **you can retrieve files or directories stored with push to any desired location using the pop command**. You can move to your desired directory and run the pop command to bring the file to that location. It also provides tag-based organization, batch operations, and complete history tracking. Additionally, the restore command allows you to restore files to their original location without removing them from the stack, making fstk a convenient alternative to the mv command for file management.\n\n## Features\n\n- Manage files and directories with enhanced \"cut/paste\" functionality\n- A safer alternative to the mv command for file and directory management\n- Provides a more intuitive workflow by separating file movement into push and pop operations\n- Push files and directories to a stack (preserving original path information)\n- Pop items from the stack when needed (can be restored to original or any desired location)\n- Simplifies file movement workflow when used with directory jumping tools like zoxide (z)\n- Easy organization and search with tags\n- Batch operations with number ranges and comma-separated values\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [Commands](#commands)\n- [Shell Completion](#shell-completion)\n- [Storage Details](#storage-details)\n- [License](#license)\n\n## Installation\n\n### Homebrew (macOS/Linux)\n\n```bash\nbrew tap archsyscall/fstk\nbrew install fstk\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/archsyscall/fstk.git\ncd fstk\ncargo build --release\ncargo install --path .\n```\n\n## Usage\n\n### Efficient Workflow (Using with zoxide)\n\n```bash\n# The mv command requires specifying both source and destination at once\nmv report.pdf ~/projects/presentation/assets/\n\n# Using fstk with zoxide makes this task simpler\nfstk push report.pdf  # Add the file to the stack\nz assets            # Quickly jump to the target directory using zoxide\nfstk pop            # Restore the file to the current location\n```\n\nAdvantages of this approach:\n- No need to enter both file path and destination path in a single command\n- Quickly navigate to complex paths with z without having to remember or type them\n- Ability to push multiple files and pop them in different locations as needed\n\n### Basic Usage\n\n```bash\n# Add a file to the stack (with tag options)\nfstk push document.pdf -t work,important\n\n# View stack contents\nfstk list\nfstk list -t project  # Filter by tag\n\n# Retrieve files (restore to current directory)\nfstk pop      # Most recent item\nfstk pop 3    # Specific item number\n\n# Retrieve files to a specific location\ncd ~/different-directory/\nfstk pop      # Restore to current location (~/different-directory/)\nfstk restore 2 # Restore to original location while maintaining the item in the stack\n```\n\n### Tag Management\n\n```bash\n# Add tags to an item\nfstk tag add 2 -t urgent,followup\n\n# Remove tags from an item\nfstk tag rm 2 -t followup\n\n# View all tags\nfstk tag list\n```\n\n### Batch Operations\n\n```bash\n# Retrieve multiple items at once\nfstk pop 1,3,5      # Items 1, 3, and 5\nfstk pop 1-5        # Items 1 through 5\nfstk pop 1,3-5,7    # Items 1, 3 through 5, and 7\n\n# Remove multiple items (without restoring)\nfstk rm 1,3-5,7\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `push \u003cPATH\u003e` | Add file/directory to the stack |\n| `pop [NUMBER]` | Remove item from the stack and restore to current directory (when executed in a different directory, restores to that location) |\n| `list` | List all items in the stack |\n| `remove \u003cNUMBER\u003e`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchsyscall%2Ffstk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchsyscall%2Ffstk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchsyscall%2Ffstk/lists"}