command line

Automated folder creation with custom naming format on linux.


Here is a little bash script I wrote to create a folder for every day, given an X amount of days.

The output format is adjustable and is just the $date command in linux with some parameters

It also filters out Saturday and Sunday but you can substitute that for any other combination of course.


The scripts provided are free to use / edit and do anything you want with. No support via email is given, only the comment section for each script is open for clarification or bug reports.

For the creation of custom scripts please contact me.



#!/bin/bash
# This script will create a folder for every day in any $date format you like
# scripting@waaromzomoeilijk.nl
###################################################################################
OUTPUTFORMAT='+%m-%d-%Y %A' # This will output: $DIRECTORY/1. January/01-01-2022 saturday
DIRECTORY='/tmp/test' # Work directory
USER='www-data' # User permissions
GROUP='www-data' # Group permissions
CHMOD='750' # File permissions
#DATE=$(date +%Y-%m-%d) # Current day. 
DATE='2022-01-01' # Set to the 1st of Jan of year XXXX then set "for i in {0..365}" to the number of days you'd like to create folders for.
####################################################################################
# Enter destination directory
mkdir -p "$DIRECTORY"
cd "$DIRECTORY"

# Create monthly folders
mkdir -p '1. January'
mkdir -p '2. February'
mkdir -p '3. March'
mkdir -p '4. April'
mkdir -p '5. May'
mkdir -p '6. June'
mkdir -p '7. July'
mkdir -p '8. August'
mkdir -p '9. September'
mkdir -p '10. October'
mkdir -p '11. November'
mkdir -p '12. December'

# Create folders for every day for a year. Change 365 to the actual number of days you'd like
for i in {0..365}
do
   NEXT_DATE=$(date "$OUTPUTFORMAT" -d "$DATE + $i day")

   # Filter out certain days, in this case weekend days and create a folder for each weekday for the entire year
   echo "'$NEXT_DATE'" | xargs mkdir
done

# Filter out folders
find "$DIRECTORY" -type d | grep 'Saturday' | sed -e 's/$/"/' | sed -e 's/^/"/' | xargs rm -r
find "$DIRECTORY" -type d | grep 'Sunday' | sed -e 's/$/"/' | sed -e 's/^/"/' | xargs rm -r

# Sort in proper monthly folder
mv "$DIRECTORY"/01-*-* "$DIRECTORY"/'1. January'/
mv "$DIRECTORY"/02-*-* "$DIRECTORY"/'2. February'/
mv "$DIRECTORY"/03-*-* "$DIRECTORY"/'3. March'/
mv "$DIRECTORY"/04-*-* "$DIRECTORY"/'4. April'/
mv "$DIRECTORY"/05-*-* "$DIRECTORY"/'5. May'/
mv "$DIRECTORY"/06-*-* "$DIRECTORY"/'6. June'/
mv "$DIRECTORY"/07-*-* "$DIRECTORY"/'7. July'/
mv "$DIRECTORY"/08-*-* "$DIRECTORY"/'8. August'/
mv "$DIRECTORY"/09-*-* "$DIRECTORY"/'9. September'/
mv "$DIRECTORY"/10-*-* "$DIRECTORY"/'10. October'/
mv "$DIRECTORY"/11-*-* "$DIRECTORY"/'11. November'/
mv "$DIRECTORY"/12-*-* "$DIRECTORY"/'12. December'/

# Set permissions
chmod -R "$CHMOD" "$DIRECTORY"
chown -R "$USER":"$GROUP" "$DIRECTORY"

exit 0

en_USEnglish