≡ Menu

Shell Script To Create Files and Directories That Do Not Exist

{ 5 comments… add one }
  • Amandeep February 11, 2012, 7:08 am

    Yeah, this script isn’t multi-process safe. Is there any other way, which is multiprocess safe as well?

  • polo July 7, 2010, 7:40 am

    This script isn’t multi-process safe.
    Test it by calling the same process with same file names multiple times in a wrapper script. ‘touch’ only changes last modification time, couldn’t tell you if a file is already been created.

  • Chris F.A. Johnson January 3, 2010, 4:28 am
    ## Print only the command name, not the full path.
    ## Send the output to stderr, not stdout
    usage(){
      echo "Usage: ${0##*/} [-f filename ] ... | [ -d dirname ] ..." >&2
      exit 1
    }
    ## Quote $1 or it will fail if an argument contains whitespace
    createDir(){
      if [ ! -d "$1" ]
      then
        mkdir -p "$1" >/dev/null 2>&1 && echo "Directory $1 created." ||  echo "Error: Failed to create $1 directory."
      else
        echo "Error: $1 directory exits!"
      fi
    }
    ## Quote $1 or it will fail if an argument contains whitespace
    createFile(){
      ## There's no need for an external command (touch)
      [ -f "$1" ] && echo "Error: $1 file exists!" || > "$1"
    }
    while getopts f:d:v option
    do
      case $option in
        f) createFile "$OPTARG";;
        d) createDir "$OPTARG";;
        *) usage ;;
      esac
    done
    shift "$(( $OPTIND - 1 ))"
    [ $# -gt 0 ] && usage
    
  • egoleo November 28, 2009, 3:06 pm

    michael: u can run this script by below.

    shell> chmod +x script_name
    shell> ./script_name

    above is one way of running the script where script_name is the name you give to the shellscript you saved.

    you can also run it as below;
    shell> sh script_name

  • michael November 6, 2009, 2:34 am

    How to run this script??

Security: Are you a robot or human?

Leave a Comment