From a886e40e6c31b65b94169d5a2b116b953c541752 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Fri, 9 Sep 2016 13:50:33 -0700 Subject: [PATCH] add dircp --- dircp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 dircp diff --git a/dircp b/dircp new file mode 100755 index 0000000..2f4c4c9 --- /dev/null +++ b/dircp @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright (C) 2016 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +dircp() { + local help="Usage: dircp [-h|--help] DIR TARGET +Copy a directory structure +Doesn't overwrite any existing files." + case $1 in + -h|--help) echo "$help"; return ;; + esac + [[ $# == 2 ]] || { echo "error: need 2 arguments, got $@"; return 1; } + [[ -d $1 ]] || { echo "error: $1 is not a directory"; return 1; } + if [[ -e $2 && ! -d $2 ]]; then + echo "error: $2 exists and is not a directory" + return 1 + fi + while read -rd ''; do + mkdir -p "$2/$REPLY" + done < <(find "$1" -type d -printf '%P\0') +} +dircp "$@" -- 2.30.2