Find matching paths
find matches paths in the file list using wildcards. Sequential formats scan to build that list; queries do not extract files.
v0.6.0 · MIT · Rust
Inspect, read, search, create and convert compressed files. Use the command line, JSON output or a local AI agent.
v0.6.0 is available through Cargo, Homebrew, npm and pnpm, with MCP included by default. See Download for every install option and prebuilt archives.
Use arcthis <command> <archive> [entry] to read and manage ZIP, 7z, RAR, TAR and single-file compression formats.
find matches paths in the file list using wildcards. Sequential formats scan to build that list; queries do not extract files.
grep searches text inside the archive with limits on file size, line length, matches and total results. Binary files are skipped by default.
hash computes a file's SHA-256 or SHA-512 checksum; verify reads the archive start to finish once, checking its structure and every readable file.
pack, extract and convert all accept --dry-run to preview the full plan before anything is written. Real writes go to a temporary location first and are saved as final only after verification passes.
Repeat --within to step into archives nested inside archives — up to 8 levels deep, entirely in memory, with no temporary files left on disk.
Add --json to any query command for versioned JSON: fields stay stable, errors carry fixed codes on stderr, and exit codes are predictable.
Arcthis detects formats by content, not by file extension — a renamed file can't fool it. Each format's quirks are handled under the hood; every command behaves the same and tells you honestly what a format can do.
| Format | Access / extract | Create | How it's read |
|---|---|---|---|
| zip | Stored/Deflate, including ZipCrypto/AES decryption | Deflate, unencrypted | Jump straight to any file |
| 7z | Yes, including AES decryption | LZMA2, unencrypted | Depends on compression layout |
| rar / rar5 | Yes (via libarchive) | read-only | Read start to finish |
| tar | Yes | yes | Read start to finish |
| tar.gz / tgz | Yes | yes | Decompressed start to finish |
| tar.bz2 / tbz2 | Yes | yes | Decompressed start to finish |
| tar.xz / txz | Yes | yes | Decompressed start to finish |
| tar.zst / tzst | Yes | yes | Decompressed start to finish |
| gzip | Contains one file | yes | Read start to finish |
| bzip2 | Contains one file | yes | Read start to finish |
| xz | Contains one file | yes | Read start to finish |
| zstd | Contains one file | yes | Read start to finish |
schema_version: "2". Field names and types are a public, versioned interface.read prints raw file contents and rejects --json.inspect reports capabilities like random_access and solid, so an agent can reason about what an operation will cost.{ "schema_version": "2", "archive": { "path": "/data/dataset.zip", "path_lossy": false, "index_used": false, "format": "zip" } }
Writes check paths, conflicts and resource limits. Output is saved from a temporary location after success.
Extraction rejects .., absolute paths, Windows drive/UNC prefixes, NUL bytes, and links that could escape the destination.
Output is written to a temporary location next to the destination and saved only after every file succeeds. A failure never leaves a half-finished result that looks complete.
Choose overwrite, skip or rename for existing destinations. Writes reject overlapping source and destination paths, including conflicts between archives in a batch.
--delete-source runs only after the new files are written, verified and saved. Any error, interruption or failed check keeps the source.
--allow-root.--allow-output-root.Install v0.6.0 to read and manage your compressed files.