ntu/test/create_test_tree.sh

81 lines
2.6 KiB
Bash
Raw Normal View History

2025-03-18 03:05:18 +01:00
#!/bin/bash
# create_test_tree.sh
# Erzeugt ein Verzeichnis mit dem Namen $TOPDIR und 20 Unterverzeichnissen
# deren Namen aus zufälligen gewöhnichen und ungewöhnlichen Zeichen (s. chars) bestehen.
# Diese enthalten Dateien mit Basisnamen aus zufälligen gewöhnichen und ungewöhnlichen Zeichen
# und konventionellen Endungen (s. extensions). Der Inhalt ist ebenfalls zufällig.
#
# Dieser Dateibaum dient dann zum Testen des Rust-Programms NameToUnix :
# z. B.
# NameToUnix -n $TOPDIR (Option -n ==> Änderungen nur anzeigen)
# oder
# NameToUnix $TOPDIR
#
#
# (c) 2025 Dieter Schlüter <dieter.schlueter@linix.de>
TOPDIR="./testverzeichnis"
# 1. Altes Testverzeichnis löschen
rm -rf "$TOPDIR"
# 2. Neues Verzeichnis erstellen
mkdir -p "$TOPDIR"
cd "$TOPDIR" || exit
# Liste gewöhnicher und ungewöhnlicher Zeichen und Emojis
chars=(
"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
"A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"
"N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
"0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
" " "  " "!" "@" "#" "$" "%" "^" "&" "*" "(" ")"
"=" "+" "[" "]" "{" "}" "|" "\\" ";" ":" "'" "\""
"," "<" ">" "?" "~" "\`" "¡" "™" "£" "¢" "∞" "§" "¶"
"•" "ª" "º" "≠" "œ" "∑" "´" "®" "†" "¨" "ˆ" "ø" "π"
"“" "" "«" "…" "å" "ß" "∂" "ƒ" "©" "˙" "∆" "˚" "¬"
"Ω" "≈" "ç" "√" "∫" "˜" "µ" "≤" "≥" "÷"
"🦄" "👾" "💩" "🚀" "🎉" "😱" "🤯" "🌌" "💥" "🔧" "📁"
)
# Liste üblicher Dateiendungen
extensions=("txt" "jpg" "png" "pdf" "docx" "xlsx" "pptx"
"zip" "tar.gz" "sh" "py" "js" "html" "css"
"php" "json" "xml" "csv" "log" "conf")
# Zufälliger Datei/Verzeichnis Name Generator
generate_weird_name() {
local length=$(( RANDOM % 15 + 5 ))
for ((i=0; i<length; i++)); do
local char_idx=$(( RANDOM % ${#chars[@]} ))
echo -n "${chars[$char_idx]}"
done
}
# 20 bizarre Verzeichnisse erstellen
for d in {1..20}; do
# for d in {1..2}; do
dir_name="$(generate_weird_name)"
mkdir -p "$dir_name"
# 20 Dateien pro Verzeichnis
for f in {1..20}; do
# for f in {1..5}; do
file_base="$(generate_weird_name)"
ext_idx=$(( RANDOM % ${#extensions[@]} ))
file_name="${file_base}.${extensions[$ext_idx]}"
# Datei mit zufälligem Inhalt erstellen
head -c $(( RANDOM % 1024 )) /dev/urandom > "$dir_name/$file_name" 2>/dev/null
done
done
# Beispielausgabe
echo "Testumgebung erstellt:"
tree -L 2 | head -n 20
exit 0