Nach einem Export meiner Blogartikel von Wordpress in Markdown Dateien, waren in diesen Dateien noch jede Menge Wordpress spezifische Einträge, die ich entfernen wollte. Mit diesem Bash Script habe ich die entsprechenden Einträge entfernen können.
Zum einen die Felder REMOVE_FIELDS=("excerpt" "layout" "guid" "format" "permalink" "id")
und zum anderen wp_statistics_words_count mit weiteren Parametern, die in den Zeilen darunter definiert waren.
Das hat mir eine Menge Zeit und manuelle Arbeit gespart! Das Script startet im aktuellen Verzeichnis und geht dann durch alle Unterverzeichnisse.
Trotz, dass es bei mir sehr erfolgreich war, unbedingt auf einer Kopie der Verzeichnisse starten , aka Backup der originalen Dateien machen, und dann stichprobenartig nach dem Durchlauf prüfen.
Viel Spaß damit.
#!/bin/bash
#
# Script: frontmatterFieldRemover.sh
#
# Removing frontmatter lines and wordpress export leftovers in .md files
# Beginning from current directory with all subdirectories
#
# author: hoergen
# date: 2026-08-07
#
SEARCH_DIR="${1:-.}"
# Array of fields to remove
REMOVE_FIELDS=("excerpt" "layout" "guid" "format" "permalink" "id")
find "$SEARCH_DIR" -type f -name "*.md" | while read -r file; do
echo "Processing: $file"
# Use sed to remove the specified fields and wp_statistics_words_count with its list
# Using sed with multiple commands
# Create a backup (optional)
# cp "$file" "$file.bak"
# Build the sed pattern for removing single-line fields
sed_pattern=""
for field in "${REMOVE_FIELDS[@]}"; do
sed_pattern="$sed_pattern -e '/^${field}:/d'"
done
# Add pattern for wp_statistics_words_count and its list items
# This removes the wp_statistics_words_count line and subsequent indented lines with dashes
sed_pattern="$sed_pattern -e '/^wp_statistics_words_count:/,/^[^[:space:]]/ { /^[[:space:]]*-/d; /^wp_statistics_words_count:/d; }'"
# Execute sed with the built pattern
eval sed -i '' "$sed_pattern" "$file" 2>/dev/null || eval sed -i "$sed_pattern" "$file"
echo "Finished processing: $file"
done
echo "All .md files processed."