Skip to content

Platform Support

Renamify is designed to work consistently across Linux, macOS, and Windows. It handles platform-specific quirks intelligently.

Linux (x86_64, arm64) ✅ macOS (Intel and Apple Silicon) ✅ Windows (x86_64, arm64)

Most macOS systems use case-insensitive filesystems. Renamify handles this by:

  • Automatic detection of filesystem case sensitivity
  • Two-step renames for case-only changes:
    1. OldName.jstemp_12345.js
    2. temp_12345.jsoldName.js
  • Conflict warnings when case changes might cause issues

Windows filesystems are typically case-insensitive. Renamify provides:

  • Smart rename handling similar to macOS
  • Reserved filename detection (CON, PRN, AUX, NUL, COM1-9, LPT1-9)
  • Path length validation (260 character limit without long path support)

Most Linux filesystems are case-sensitive, allowing:

  • Direct renames without intermediate steps
  • Full Unicode support for international characters
  • No reserved filename restrictions

Renamify accepts both forward slashes and backslashes:

Terminal window
# These are equivalent on Windows
renamify plan old new --include "src/**/*.js"
renamify plan old new --include "src\\**\\*.js"

Windows: 260 characters by default

Terminal window
# Renamify detects and warns about long paths
Error: Path too long for Windows:
"C:\very\long\path\that\exceeds\260\characters\..."
Enable long paths or use shorter directory names.

macOS/Linux: Much higher limits (typically 4096+ characters)

Renamify fully supports Unicode filenames and content:

Terminal window
# Works with international characters
renamify rename 用户 profile --preview table
renamify rename josé maria --preview table
  • Symlink files can be renamed if their names match the pattern
  • Symlink targets are never modified
  • Directory traversal does not follow symlinks by default

Linux/macOS:

  • Full symlink support
  • Can create and modify symlinks

Windows:

  • Limited symlink support (requires admin privileges)
  • Renamify handles gracefully without errors
Terminal window
# Renamify respects and preserves file permissions
ls -la before.js # -rw-r--r--
renamify rename old new
ls -la after.js # -rw-r--r-- (preserved)
  • Uses Windows ACLs appropriately
  • Handles read-only files with clear error messages
  • Fastest performance due to efficient filesystem operations
  • Parallel directory traversal scales well with CPU cores
  • Memory-mapped file I/O for large files
  • Good performance with some filesystem overhead
  • APFS optimizations for recent macOS versions
  • Slightly slower renames due to case-insensitivity handling
  • Good performance with Windows-specific optimizations
  • NTFS optimizations for efficient file operations
  • Long path support (handles paths with \?\ prefix)
  • Antivirus interaction may slow operations
  • Unicode normalization: macOS may normalize Unicode differently
  • Resource forks: Very old HFS+ volumes may have resource forks (rarely an issue)
  • Spotlight indexing: May temporarily slow file operations
  • Antivirus scanning: Real-time scanners may slow file operations
  • File locking: Some editors/IDEs lock files more aggressively
  • Long path support: Automatically handled with \?\ prefix when needed
  • Case sensitivity: Be careful when moving code between case-sensitive and case-insensitive systems
  • Filesystem differences: Some network filesystems may have quirks

Renamify automatically detects platform capabilities:

Terminal window
# Force platform behavior (rarely needed)
RENAMIFY_PLATFORM=linux renamify plan old new # Force Linux behavior
RENAMIFY_PLATFORM=windows renamify plan old new # Force Windows behavior
Terminal window
# Force case sensitivity detection (expert use only)
RENAMIFY_CASE_SENSITIVE=true renamify plan old new
RENAMIFY_CASE_SENSITIVE=false renamify plan old new
Terminal window
# Take advantage of case sensitivity
renamify rename oldName OldName # Works directly
# Use parallel processing for large projects
renamify plan old new --include "**/*.rs" # Fast on Linux
Terminal window
# Be aware of case insensitivity
renamify rename oldName OldName --preview table # Shows two-step rename
# Consider filesystem overhead for huge projects
renamify plan old new --include "src/**" --exclude "node_modules/**"
Terminal window
# Use forward slashes for consistency
renamify plan old new --include "src/**/*.js"
# Be mindful of path lengths
renamify plan old new --exclude "**/very/deeply/nested/directories/**"

For teams working across platforms:

Terminal window
# Test your renaming on multiple platforms
git branch test-rename
renamify rename old new --preview table
git commit -m "Test rename"
# Have team members test on their platforms
git push origin test-rename
  • macOS: Better APFS optimization
  • Linux: io_uring support for faster file operations
  • All: Platform-specific ignore patterns