-
-
Save katrinleinweber/a07be5564967048f259b54707e5e7a3d to your computer and use it in GitHub Desktop.
Generate Files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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