add psg-function
[small-misc-bash] / dircp
1 #!/bin/bash
2 # Copyright (C) 2016 Ian Kelling
3
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7
8 # http://www.apache.org/licenses/LICENSE-2.0
9
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 dircp() {
17 local help="Usage: dircp [-h|--help] DIR TARGET
18 Copy a directory structure
19 Doesn't overwrite any existing files."
20 case $1 in
21 -h|--help) echo "$help"; return ;;
22 esac
23 [[ $# == 2 ]] || { echo "error: need 2 arguments, got $@"; return 1; }
24 [[ -d $1 ]] || { echo "error: $1 is not a directory"; return 1; }
25 if [[ -e $2 && ! -d $2 ]]; then
26 echo "error: $2 exists and is not a directory"
27 return 1
28 fi
29 while read -rd ''; do
30 mkdir -p "$2/$REPLY"
31 done < <(find "$1" -type d -printf '%P\0')
32 }
33 dircp "$@"