{"id":13436219,"url":"https://github.com/AnderEnder/s3find-rs","last_synced_at":"2025-03-18T20:31:02.362Z","repository":{"id":32879992,"uuid":"129531869","full_name":"AnderEnder/s3find-rs","owner":"AnderEnder","description":"Walk an Amazon s3 path hierarchy","archived":false,"fork":false,"pushed_at":"2025-03-18T10:29:31.000Z","size":988,"stargazers_count":33,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T10:36:14.681Z","etag":null,"topics":["amazon-s3","aws-s3","command-line-tool","find","rust","s3","s3-hierarchy"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnderEnder.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":"2018-04-14T15:55:09.000Z","updated_at":"2025-03-18T10:26:23.000Z","dependencies_parsed_at":"2025-02-20T21:24:03.689Z","dependency_job_id":"84772114-76c2-435c-8004-daafeac24a4e","html_url":"https://github.com/AnderEnder/s3find-rs","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnderEnder%2Fs3find-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnderEnder%2Fs3find-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnderEnder%2Fs3find-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnderEnder%2Fs3find-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnderEnder","download_url":"https://codeload.github.com/AnderEnder/s3find-rs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244301348,"owners_count":20430926,"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":["amazon-s3","aws-s3","command-line-tool","find","rust","s3","s3-hierarchy"],"created_at":"2024-07-31T03:00:45.599Z","updated_at":"2025-03-18T20:31:02.057Z","avatar_url":"https://github.com/AnderEnder.png","language":"Rust","funding_links":[],"categories":["应用","Applications","应用 Applications"],"sub_categories":["贡献"],"readme":"# s3find\n[![build status](https://github.com/AnderEnder/s3find-rs/workflows/Build/badge.svg)](https://github.com/AnderEnder/s3find-rs/actions)\n[![freebsd build status](https://api.cirrus-ci.com/github/AnderEnder/s3find-rs.svg)](https://cirrus-ci.com/github/AnderEnder/s3find-rs/\u003e)\n[![codecov](https://codecov.io/gh/AnderEnder/s3find-rs/branch/master/graph/badge.svg)](https://codecov.io/gh/AnderEnder/s3find-rs)\n[![crates.io](https://img.shields.io/crates/v/s3find.svg)](https://crates.io/crates/s3find)\n[![docker image](https://img.shields.io/docker/cloud/build/anderender/s3find.svg)](https://hub.docker.com/r/anderender/s3find)\n\n\nA command line utility to walk an Amazon S3 hierarchy. An analog of find for Amazon S3.\n\n## Distribution\n\n### Release page distributions\n\nGithub Release page provides binaries for:\n\n* Windows\n* Linux\n* macOS\n\n### Docker\n\nDocker image on docker hub:\n\n* develop: `anderender/s3find:latest`\n* release: `anderender/s3find:\u003cversion\u003e`\n\n## Usage\n\n```sh\nUSAGE:\n    s3find [FLAGS] [OPTIONS] \u003cpath\u003e [SUBCOMMAND]\n\nFLAGS:\n    -h, --help\n            Prints help information\n\n        --summarize\n            Print summary statistic\n\n    -V, --version\n            Prints version information\n\n\nOPTIONS:\n        --aws-access-key \u003caws-access-key\u003e\n            AWS access key. Unrequired.\n\n        --aws-region \u003caws-region\u003e\n            The region to use. Default value is us-east-1 [default: us-east-1]\n\n        --aws-secret-key \u003caws-secret-key\u003e\n            AWS secret key. Unrequired\n\n        --size \u003cbytes-size\u003e...\n            File size for match:\n                5k - exact match 5k,\n                +5k - bigger than 5k,\n                -5k - smaller than 5k,\n\n            Possible file size units are as follows:\n                k - kilobytes (1024 bytes)\n                M - megabytes (1024 kilobytes)\n                G - gigabytes (1024 megabytes)\n                T - terabytes (1024 gigabytes)\n                P - petabytes (1024 terabytes)\n        --iname \u003cipatern\u003e...\n            Case-insensitive glob pattern for match, can be multiple\n\n        --limit \u003climit\u003e\n            Limit result\n\n        --name \u003cnpatern\u003e...\n            Glob pattern for match, can be multiple\n\n        --page-size \u003cnumber\u003e\n            The number of results to return in each response to a\n            list operation. The default value is 1000 (the maximum\n            allowed). Using a lower value may help if an operation\n            times out. [default: 1000]\n        --regex \u003crpatern\u003e...\n            Regex pattern for match, can be multiple\n\n        --mtime \u003ctime\u003e...\n            Modification time for match, a time period:\n                -5d - for period from now-5d to now\n                +5d - for period before now-5d\n\n            Possible time units are as follows:\n                s - seconds\n                m - minutes\n                h - hours\n                d - days\n                w - weeks\n\n            Can be multiple, but should be overlaping\n\nARGS:\n    \u003cpath\u003e\n            S3 path to walk through. It should be s3://bucket/path\n\n\nSUBCOMMANDS:\n    copy        Copy matched keys to a s3 destination\n    delete      Delete matched keys\n    download    Download matched keys\n    exec        Exec any shell program with every key\n    help        Prints this message or the help of the given subcommand(s)\n    ls          Print the list of matched keys\n    lstags      Print the list of matched keys with tags\n    move        Move matched keys to a s3 destination\n    nothing     Do not do anything with keys, do not print them as well\n    print       Extended print with detail information\n    public      Make the matched keys public available (readonly)\n    tags        Set the tags(overwrite) for the matched keys\n\n\nThe authorization flow is the following chain:\n  * use credentials from arguments provided by users\n  * use environment variable credentials: AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\n  * use credentials via aws file profile.\n    Profile can be set via environment variable AWS_PROFILE\n    Profile file can be set via environment variable AWS_SHARED_CREDENTIALS_FILE\n  * use AWS instance IAM profile\n  * use AWS container IAM profile\n```\n\n## Examples\n\n### Find path by glob pattern\n\n#### Print\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' print\n```\n\n#### Delete\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' delete\n```\n\n#### List\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' ls\n```\n\n#### List keys with tags\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' lstags\n```\n\n#### Exec\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' exec 'echo {}'\n```\n\n#### Download\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' download\n```\n\n#### Copy files to another s3 location\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*.dat' copy -f 's3://example-bucket/example-path2'\n```\n\n#### Move files to another s3 location\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*.dat' move -f 's3://example-bucket/example-path2'\n```\n\n#### Set tags\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*9*' tags 'key:value' 'env:staging'\n```\n\n#### Make public available\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*9*' public\n```\n\n### Find path by case insensitive glob pattern\n\n```sh\ns3find 's3://example-bucket/example-path' --iname '*s*' ls\n```\n\n### Find path by regex pattern\n\n```sh\ns3find 's3://example-bucket/example-path' --regex '1$' print\n```\n\n### Find path by size\n\n#### Exact match\n\n```sh\ns3find 's3://example-bucket/example-path' --size 0 print\n```\n\n#### Larger\n\n```sh\ns3find 's3://example-bucket/example-path' --size +10M print\n```\n\n#### Smaller\n\n```sh\ns3find 's3://example-bucket/example-path' --size -10k print\n```\n\n### Find path by time\n\n#### Files modified for the period before last 10 seconds\n\n```sh\ns3find 's3://example-bucket/example-path' --mtime 10 print\n```\n\n#### Files modified for the period before last 10 minutes\n\n```sh\ns3find 's3://example-bucket/example-path' --mtime +10m print\n```\n\n#### Files modified since last 10 hours\n\n```sh\ns3find 's3://example-bucket/example-path' --mtime -10h print\n```\n\n### Multiple filters\n\n#### Same filters\n\nFiles with size between 10 and 20 bytes\n\n```sh\ns3find 's3://example-bucket/example-path' --size +10 --size -20 print\n```\n\n#### Different filters\n\n```sh\ns3find 's3://example-bucket/example-path' --size +10 --name '*file*' print\n```\n\n### Additional control\n\n#### Select limited number of keys\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' --limit 10\n```\n\n#### Limit page size of the request\n\n```sh\ns3find 's3://example-bucket/example-path' --name '*' --page-size 100\n```\n\n## How to build and install\n\nRequirements: rust and cargo\n\n```sh\n# Build\ncargo build --release\n\n# Install from local source\ncargo install\n\n# Install latest from git\ncargo install --git https://github.com/AnderEnder/s3find-rs\n\n# Install from crate package\ncargo install s3find\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnderEnder%2Fs3find-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAnderEnder%2Fs3find-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAnderEnder%2Fs3find-rs/lists"}