NoPaste

mk_test_tree

von heisenberg
SNIPPET_DESC:
Dateibaum aus zufälligen Namen erzeugen
SNIPPET_CREATION_TIME:
09.10.2024 15:32:54
SNIPPET_PRUNE_TIME:
Unendlich

SNIPPET_TEXT:
  1. #!/bin/bash
  2.  
  3. CHARS="abcdefghijklmnopqrstuvwxyz0123456789_ .-,@:;()%\$!{}[]=*+#°§²³"
  4. FIRST_CHARS="abcdefghijklmnopqrstuvwxyz0123456789_"
  5. BASE_DIR="source"
  6.  
  7. ((DIR_LEVELS=$RANDOM%5))
  8. ((DIR_COUNT=$RANDOM%50))
  9. ((FILES_PER_DIRECTORY=$RANDOM%50))
  10.  
  11. export CHARS FIRST_CHARS DIR_LEVELS DIR_COUNT FILES_PER_DIRECTORY BASE_DIR
  12.  
  13. randfirstchar() {
  14.         local idx
  15.         ((idx=$RANDOM%${#FIRST_CHARS}))
  16.         echo "${FIRST_CHARS:$idx:1}"
  17.  
  18. }
  19.  
  20. randchar() {
  21.         local idx
  22.         ((idx=$RANDOM%${#CHARS}))
  23.         echo "${CHARS:$idx:1}"
  24.  
  25. }
  26.  
  27. mk_token() {
  28.         local length
  29.         local token=""
  30.         ((length=$RANDOM % 20 + 4))
  31.         token=$(randfirstchar)
  32.         for((i=1;i<=$length;i++));do
  33.                 token="$token$(randchar)"
  34.         done
  35.         echo "$token"
  36. }
  37.  
  38. mk_content() {
  39.  
  40.         local dir_levels="$1"
  41.         local files_per_directory="$2"
  42.         local new_dir="$(mk_token)"
  43.         local i
  44.  
  45.         if [ $dir_levels -gt 0 ] ;then
  46.                 mkdir "$new_dir"
  47.                 cd "$new_dir"
  48.                 mk_content $((dir_levels - 1)) $files_per_directory
  49.                 cd ..
  50.         fi
  51.         for ((i=1;i<=$files_per_directory;i++));do
  52.                 touch "$(mk_token)"
  53.         done
  54.  
  55. }
  56.  
  57. main() {
  58.         cd "$BASE_DIR"
  59.         local a b c
  60.         local current_dir
  61.  
  62.         for((a=1;a<$DIR_COUNT;a++));do
  63.                 mk_content $DIR_LEVELS $FILES_PER_DIRECTORY
  64.         done
  65. }
  66.  
  67. main

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN