---
type: collection
section: snippets
generated_at: 2026-09-16T18:21:46+02:00
total_entries: 5
tag_filter: Automation
---

# Snippets

## Rename Files to Random UUIDs via macOS Shortcuts

---
type: snippet
id: 2lpiw0jmwjyaammm
title: >
  Rename Files to Random UUIDs via macOS
  Shortcuts
url: >
  https://www.jakubpelak.com/snippets/rename-files-to-random-uuids-with-shortcuts
section: snippets
tags:
  - macOS
  - Shortcuts
  - AppleScript
  - Automation
  - UUID
published_at: 2026-04-22
---

A companion to the (link: page://kowznhljjrgeq9r2 text: Bash UUID rename snippet), this AppleScript is meant to be dropped into a "Run AppleScript" action inside the macOS Shortcuts app (or Automator as a Quick Action). It accepts the files passed in as input, generates a random lowercase UUID for each one, and renames the file in place while preserving the original extension — handy as a right-click service in Finder.

```applescript
on run {input, parameters}
  repeat with f in input
    set posixPath to POSIX path of f
    set ext to do shell script "basename " & quoted form of posixPath & " | sed 's/.*\\.//'"
    set uuid to do shell script "uuidgen | tr '[:upper:]' '[:lower:]'"
    set newName to uuid & "." & ext
    tell application "Finder"
      set name of (POSIX file posixPath as alias) to newName
    end tell
  end repeat
  return input
end run
```

> [!TIP]
> Set the shortcut’s input to "Files" and, if you want it in Finder’s context menu, enable "Use as Quick Action" → "Services menu" in the shortcut’s details.

## Delete Local Git Branches Whose Remote Was Deleted

---
type: snippet
id: le540vfe3hsou4yo
title: >
  Delete Local Git Branches Whose Remote
  Was Deleted
url: >
  https://www.jakubpelak.com/snippets/git-branches-remote-deleted
section: snippets
tags:
  - Git
  - Cleanup
  - Automation
  - CLI
published_at: 2026-01-31
---

When working with feature branches, it’s easy for your local repository to accumulate branches that were already deleted on the remote. This snippet safely removes all local branches whose remote tracking branch no longer exists.

```sh
git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs -r git branch -d
````

If you want to remove them regardless of merge status, replace `-d` with `-D`.

## Find Dirty Git Repositories

---
type: snippet
id: yqeihixirgfk24gh
title: Find Dirty Git Repositories
url: >
  https://www.jakubpelak.com/snippets/find-dirty-git-repositories
section: snippets
tags:
  - Git
  - Automation
  - CLI
  - Script
published_at: 2025-08-08
---

A tiny shell script that recursively scans a directory for Git repositories with uncommitted changes, nicknamed `dirgit`—a play on words combining "directory", "dirty", and "git".

```bash
#!/bin/bash

# Use current directory or first argument
ROOT="${1:-$(pwd)}"

# Find all Git repositories and check for dirty state
find "$ROOT" -type d -name ".git" 2>/dev/null | while read -r gitdir; do
    repo="$(dirname "$gitdir")"
    cd "$repo" || continue
    if [[ -n $(git status --porcelain) ]]; then
        echo "$repo"
    fi
done
````

Save it as `dirgit` (or any name you prefer), make it executable (`chmod +x dirgit`), and place it in `/usr/local/bin` or `~/bin` to use it globally.

### Usage

```bash
dirgit         # scan current directory
dirgit ~/code  # scan a specific directory
```

## Delete All Local Branches Except main

---
type: snippet
id: RYVuj6j1rJ49DePN
title: Delete All Local Branches Except main
url: >
  https://www.jakubpelak.com/snippets/delete-all-local-branches-except-main
section: snippets
tags:
  - Git
  - Automation
  - CLI
published_at: 2025-06-26
---

A handy one-liner to clean up all your local Git branches except `main`. It uses `-D` to **force-delete** each branch, even if it hasn’t been merged—so be careful. If you want a safer version, replace `-D` with `-d` to only delete branches that have been merged.

```sh
git branch | grep -v "main" | xargs git branch -D
```

Credit: (link: https://coderwall.com/p/x3jmig/remove-all-your-local-git-branches-but-keep-master)

## Rename PNG Files to Random UUIDs

---
type: snippet
id: kowznhljjrgeq9r2
title: Rename PNG Files to Random UUIDs
url: >
  https://www.jakubpelak.com/snippets/rename-png-files-to-random-uuids
section: snippets
tags:
  - Automation
  - CLI
  - UUID
  - Script
published_at: 2025-03-09
---

A simple Bash script that renames all `.png` files in the current directory using randomly generated lowercase UUIDs. It ensures `uuidgen` is installed before execution and skips renaming if no PNG files are found.

```bash
#!/bin/bash

# Check if 'uuidgen' command is available
if ! command -v uuidgen &> /dev/null; then
  echo "uuidgen command not found. Please install it first."
  exit 1
fi

# Loop through all .png files in the current directory
for file in *.png; do
  # Skip if no PNG files found
  if [ ! -e "$file" ]; then
    echo "No PNG files found in the current directory."
    exit 0
  fi

  # Generate a random UUID v4 and convert to lowercase
  uuid=$(uuidgen | tr '[:upper:]' '[:lower:]')

  # Rename the file
  mv "$file" "${uuid}.png"
done

echo "All PNG files have been renamed to random lowercase UUIDs."
```

> [!NOTE]
> Prefer a right-click service on macOS? See the AppleScript variant: (link: page://2lpiw0jmwjyaammm text: Rename Files to Random UUIDs via macOS Shortcuts).

