cbhuang
9/25/2017 - 11:09 PM

Generate a dummy file and folder structure

Generate a dummy file and folder structure

#!/bin/bash
#
#    generate a dummy file and folder structure
#
# Args:
#   $1  #layers to generate
#   $2  #files
#   $3  #folders

# process args
if [ -z "$3" ]; then
  echo "[Error] Not enough arguments!"
  exit 1
else
  echo "[Debug] Will create $1 layers of folders."
  echo "[Debug] There will be $2 files and $3 folders within each layer."
fi

# erase previous results
if [ -d "outer" ]; then
  echo -n "**User Input** rm -rf \"outer\"? (y/n)"
  read res
  if [ "$res" == "y" ]; then
    rm -rf "outer"
  fi
fi

# create base directory
mkdir "outer"
cd "outer"


treegen() {
  # Args:
  #   $1  #layers left
  #   $2  #files
  #   $3  #folders

  echo "[DEBUG] Processing layer $1 (smaller=deeper)"

  # recursive, terminate when $1 == 0
  if (( $1 > 0 )); then

    local layername
    local filename
    local dirname
    local i

    if (( $1 == 1 )); then
      layername="innermost"
    else
      layername="inner$1"
  	fi

    # create files
    for (( i = 1; i <= $2; i++ )); do
      filename="${layername}.file${i}"
      echo "content of $filename" >> "$filename"
    done

    # create folder recursively
    for (( i = 1; i <= $3; i++ )); do
      dirname="${layername}-dir${i}"
      mkdir "$dirname"
      cd "$dirname"
      treegen $(($1 - 1)) $2 $3
      cd ..
    done
  
  fi

  echo "[DEBUG] Exit layer $1"
}

treegen $1 $2 $3