3.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Repository Overview
This repository contains bash scripts for image processing operations, specifically for:
- Resizing large JPEG images using ImageMagick
- Converting RAR archives to ZIP format
- Processing images inside ZIP archives
- Recursive directory operations
Architecture
Script Organization
The scripts follow a modular pattern with three tiers:
-
Core scripts - Perform operations in current directory only:
images_resize.sh- Resizes JPEGs in current directoryrar2zip.sh- Converts RAR to ZIP (takes file arguments)zip_images_resize.sh- Resizes JPEGs inside ZIP files (takes file arguments)
-
Recursive scripts - Traverse directories and call core scripts:
images_resize_recursive.sh- Calls~/images_resize.shin each subdirectoryzip_images_resize_recursive.sh- Finds all ZIPs and callszip_images_resize.shzip_images_recursive.sh- Recursively creates ZIPs from JPEGs in directory trees
-
Wrapper scripts - Execute core scripts on specific paths:
rar2zip_images.sh- Runsrar2zip.shon/media/rewt/media/images/rar2zip_incomplete.sh- Runsrar2zip.shon/media/rewt/media/incomplete/
Key Design Patterns
Script Path Resolution: Recursive and wrapper scripts reference scripts using relative paths with SCRIPT_DIR:
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
"$SCRIPT_DIR/images_resize.sh"
ImageMagick Path: Uses custom ImageMagick installation at ~/Applications/magick
Temporary Storage: Uses RAM disk (/dev/shm/) for temporary file operations to improve performance
Cleanup Handling: Scripts implement trap-based cleanup functions to remove temp directories on exit/error
File Safety Checks: Before deleting originals, scripts verify output files exist and are non-empty
Common Commands
Resize Images
In current directory:
./images_resize.sh
Recursively through subdirectories:
./images_resize_recursive.sh
Image resize parameters: -resize 8000000@@\> (max 8MP), -quality 85%, -sampling-factor 4:2:0
Convert RAR to ZIP
Single/multiple files:
./rar2zip.sh file1.rar file2.rar
All RARs in specific paths:
./rar2zip_images.sh # /media/rewt/media/images/
./rar2zip_incomplete.sh # /media/rewt/media/incomplete/
Compression: Uses 7z with -mx=9 (maximum compression)
Process ZIP Archives
Resize images inside ZIP files:
./zip_images_resize.sh archive1.zip archive2.zip
Recursively process all ZIPs:
./zip_images_resize_recursive.sh
Create ZIPs from directory structure (preserves hierarchy in filename):
./zip_images_recursive.sh
Dependencies
- ImageMagick (
~/Applications/magick) - For image resizing 7z- For ZIP compressionunrarorrar- For RAR extractionnumfmt- For human-readable file size output/dev/shm/- RAM disk for temporary storage
Important Notes
- Scripts modify files in-place (originals are deleted after successful processing)
- File modification times are preserved using
touch -r - Scripts use absolute paths via
realpathfor file handling - Recursive scripts use
findwith-print0and null-delimited reading for safe filename handling