From: Ian Kelling Date: Fri, 9 Sep 2016 20:50:33 +0000 (-0700) Subject: add dircp X-Git-Url: https://iankelling.org/git/?a=commitdiff_plain;h=a886e40e6c31b65b94169d5a2b116b953c541752;p=small-misc-bash add 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 "$@"