setup_Projekt/find.sh
2026-04-29 11:27:32 +02:00

69 lines
No EOL
2.6 KiB
Bash
Executable file

#!/bin/bash
# Ermittelt das Verzeichnis, in dem dieses Skript liegt, als Basis für die Suche
BASE_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
while true; do
# 1. Alle README.md Dateien finden und nach Tags durchsuchen
# Suche startet im dynamisch ermittelten BASE_DIR
all_tags=$(grep -rhioE "(#\w+|Tags:.*)" "$BASE_DIR" --include="README.md" 2>/dev/null | \
sed 's/Tags://g' | tr ',' '\n' | tr -d ' ' | sort -u)
if [ -z "$all_tags" ]; then
zenity --error --title="Fehler" --text="Keine Tags in den README-Dateien unter\n$BASE_DIR gefunden."
break
fi
# 2. Grafische Auswahl der Tags via Zenity
selected_tag=$(zenity --list \
--title="Projekt-Tag-Suche" \
--column="Verfügbare Tags" \
--width=400 --height=500 \
$all_tags)
# Wenn Abbrechen gedrückt wurde oder das Fenster geschlossen wurde
if [ -z "$selected_tag" ]; then
break
fi
# 3. Ergebnisse finden
results=$(grep -rl "$selected_tag" "$BASE_DIR" --include="README.md" 2>/dev/null | while read -r file; do
dirname "$(realpath "$file")"
done)
# Ergebnisse in einem Info-Fenster anzeigen
if [ -z "$results" ]; then
zenity --info --title="Ergebnis" --text="Keine Projekte für den Tag '$selected_tag' gefunden."
else
zenity --info --title="Gefundene Projekte: $selected_tag" \
--text="Folgende Ordner enthalten den Tag:\n\n$results" \
--width=600
fi
# 4. Export-Abfrage mit Zeitstempel-Logik
if zenity --question --title="Exportieren?" --text="Möchtest du diese Liste in eine Datei speichern?"; then
# Zeitstempel für den Dateinamen (amerikanisches Format für die Sortierung)
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
# Dateiauswahl-Dialog zum Speichern
final_filename=$(zenity --file-selection --save --confirm-overwrite \
--filename="${timestamp}_suche_export.txt" \
--title="Export speichern unter...")
if [ -n "$final_filename" ]; then
{
echo "Tag: $selected_tag"
echo "Export-Zeitpunkt: $(date)"
echo "------------------------------------------"
echo "Ergebnisse:"
echo "$results"
} > "$final_filename"
zenity --info --text="Datei wurde erfolgreich gespeichert:\n$final_filename"
fi
fi
# 5. Weitersuchen oder Beenden
if ! zenity --question --title="Weitere Suche?" --text="Möchtest du eine weitere Suche starten?"; then
break
fi
done