Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save katrinleinweber/a07be5564967048f259b54707e5e7a3d to your computer and use it in GitHub Desktop.
Save katrinleinweber/a07be5564967048f259b54707e5e7a3d to your computer and use it in GitHub Desktop.
Generate Files
#!/usr/bin/env bash
# Forked from https://gist.github.com/patrickt010/1a5ce16a7fe33e97a0ab
if [ $# -ne 4 -a $# -ne 5 ]
then
echo "Usage: generatefiles <depth> <num of folders per depth> <num of files per folder> <min size of file> [<max size of file>]"
exit -1
fi
declare path=$(pwd)
declare numDepth=$1
declare numFolders=$2
declare numFiles=$3
declare minSize=$4
declare maxSize=$5
CreateFolders(){
local depth=$1
local folderRoot=$2
local name=$3
CreateFiles $folderRoot folder$name
if [ $depth -eq $numDepth ]
then
return;
fi
local newDepth=$((depth + 1))
local folderIndex=1;
for (( ; folderIndex <= $numFolders; folderIndex++ ))
do
local folderName=$name-$folderIndex
fullFolderName=$folderRoot/folder$folderName
mkdir $fullFolderName
echo fullFolderName: $fullFolderName
local newRoot=$folderRoot/folder$folderName
CreateFolders "$newDepth" "$newRoot" "$folderName"
done
}
CreateFiles()
{
local folderRoot=$1
local folderName=$2
local fileIndex=1;
for (( ; fileIndex <= $numFiles; fileIndex++ ))
do
local fileName=file$folderName-$fileIndex.txt
CreateFile "$fileName" "$folderRoot"
done
}
CreateFile()
{
local fileName=$1
local folderRoot=$2
local fullFileName=$folderRoot/$fileName
echo fullFileName: $fullFileName
random32=$(( ( ($RANDOM & 3)<<30 | $RANDOM<<15 | $RANDOM ) & 0x7FFFFFFF ))
randomSize=$((random32%$minSize))
if [ $randomSize -lt $minSize ]
then
randomSize=$minSize
fi
echo randomSize:$randomSize maxSize:$maxSize
for line in $(seq 1 $randomSize)
do
echo $line >> $fullFileName
done
}
if [ $# -eq 5 ]
then
minSize=$5
fi
echo path: $path numDepth: $numDepth numFolders: $numFolders numFiles: $numFiles
echo maxSize: $maxSize minSize: $minSize
time=$(date -u | tr ": " "--")
echo $time
Syncpoint=$path/$time
mkdir $Syncpoint
CreateFolders "0" "$Syncpoint" ""
git init || true
git add $Syncpoint
git commit -m "Generate $numFolders folders with $numFiles files with $maxSize lines"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment