In the previous post, I wrote about an shellscript that store some data in a directory whose name includes date info.

Here I modified it to be able to add an identifier after the date info in the directory name. As shown in the following code, getopts function? is used to receive -i option. After analyzing the options, shift line is necessary, otherwise identifier is also counted as an argument.

#!/bin/bash
 
CMDNAME=`basename $0`
while getopts i: OPT
do
  case $OPT in
    "i" ) flag_i="true"; identifier="$OPTARG" ;;
      * ) echo "Usage: $CMDNAME [-i identifier] FILE [FILE, ...]"
  esac
done
shift `expr $OPTIND - 1`
 
if [ $# -eq 0 ]; then
    echo "There are no files to be saved..."
    exit 0
fi
 
now=`date +%y%m%d_%H%M%S`
if [ "$flag_i" = "true" ]; then
    dname=results_${now}_${identifier}
else
    dname=results_${now}
fi
mkdir $dname
cp $* $dname/
echo $*
echo "These files are saved in " $dname

If you save this script as keep_results.sh somewhere in your system, you can use this as :

$ /path/to/keep_results.sh -i identifier file1 file2 file3 ...

to save file# files into the directory whose name is like results_160225_003814_identifier.