Commit 5f96190e authored by Aron Griffis's avatar Aron Griffis

Stop calling find for simple operations. Just use extglob.

Additionally use `cp -a` consistently rather than alternating between
`cp -a` and `cp -r`, and don't fail compile if the glob doesn't expand to
anything.
parent c579162e
...@@ -40,23 +40,29 @@ un-set-env() { ...@@ -40,23 +40,29 @@ un-set-env() {
# Does some serious copying. # Does some serious copying.
deep-cp() { deep-cp() {
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec cp -a '{}' $2 \; declare source="$1" target="$2"
cp -r $1/!(tmp) $2
# echo copying $1 to $2 mkdir -p "$target"
# cp doesn't like being called without source params,
# so make sure they expand to something first.
# subshell to avoid surprising caller with nullglob.
(
shopt -s nullglob
set -- "$source"/!(tmp) "$source"/.{[!.],.?}*
[[ $# == 0 ]] || cp -a "$@" "$target"
)
} }
# Does some serious moving. # Does some serious moving.
deep-mv() { deep-mv() {
deep-cp $1 $2 deep-cp "$1" "$2"
deep-rm "$1"
rm -fr $1/!(tmp)
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
} }
# Does some serious deleting. # Does some serious deleting.
deep-rm() { deep-rm() {
rm -fr $1/!(tmp) rm -rf "$1"/!(tmp) "$1"/.{[!.],.?}*
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment