copy folder structure only
This commit is contained in:
1
bin/cp-dir-struct
Symbolic link
1
bin/cp-dir-struct
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../files/cp-dir-struct
|
||||||
40
files/cp-dir-struct
Executable file
40
files/cp-dir-struct
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
set -e
|
||||||
|
function helpexit() {
|
||||||
|
echo Usage: $( basename "$0" ) -v source[/] target
|
||||||
|
echo Copy directory structure to a folder.
|
||||||
|
echo 'This command always recurses to subdirectories!'
|
||||||
|
echo '-v verbose'
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
VERBOSE=""
|
||||||
|
for ((i=1; i<=${#@}; i++)) {
|
||||||
|
[[ "${!i}" = "-h" ]] && helpexit
|
||||||
|
[[ "${!i}" = "--help" ]] && helpexit
|
||||||
|
[[ "${!i}" = "-v" ]] && { VERBOSE="-v"; continue; }
|
||||||
|
[[ -z "$SRC" ]] && { SRC="${!i}"; continue; }
|
||||||
|
[[ -z "$TGT" ]] && { TGT="${!i}"; continue; }
|
||||||
|
echo Too many arguments
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
is_subfolder=1
|
||||||
|
if [[ "${SRC: -1}" = "/" ]]; then
|
||||||
|
is_subfolder=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
src_abs=$( realpath "$SRC" )
|
||||||
|
tgt_abs=$( realpath "$TGT" )
|
||||||
|
src_base=$( basename "$src_abs" )
|
||||||
|
|
||||||
|
if [[ $is_subfolder -eq 1 ]]; then
|
||||||
|
tgt_abs+="/$src_base"
|
||||||
|
fi
|
||||||
|
|
||||||
|
find "$SRC" -mindepth 1 -type d -printf "$tgt_abs/%P\0" | while read -d $'\0' file; do
|
||||||
|
mkdir -p $VERBOSE "$file"
|
||||||
|
done
|
||||||
|
|
||||||
Reference in New Issue
Block a user