blob: fad5a19515aa60131767220c900e23fcaa8679c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#!/usr/bin/env bash
TMPDIR=$(mktemp -d)
CSPLIT_PREFIX=$TMPDIR/split
if [[ -n "$AUTOMV_DIR" ]]; then
automvdir=$AUTOMV_DIR
else
if [[ -d "/usr/local/etc/automv.d" ]]; then
automvdir=/usr/local/etc/automv.d
else
echo 'Missing automv.d location: please create confs in /usr/local/etc/automv.d
or supply a directory in $AUTOMV_DIR'
exit 1
fi
fi
function extract {
local file=$1
local prop=$2
grep "^${prop}=.*$" $file | cut -d '=' -f2
}
function automv {
local query=$1
local source=$2
local target=$3
echo "Moving files from $source matching '$query' to $target"
find $source -type f \( -regex "${query}" ! -iname ".*" \) \
| xargs -I '{}' mv -v {} $target/
}
function split {
file=$1
filename=$(basename --suffix=.conf $file)
csplit $1 \
--prefix="${CSPLIT_PREFIX}-${filename}" \
--suffix-format='_%04d.conf' \
--elide-empty-files \
--suppress-matched \
--keep-files \
--silent \
/---/ '{*}'
}
echo "Executing automv functions from $automvdir"
for file in $automvdir/*.conf
do
split $file
done
for file in $TMPDIR/*.conf
do
echo "found $file"
if [[ -f $file ]]; then
# Extract file configs
query=$(extract $file "query")
sourced=$(extract $file "source")
target=$(extract $file "target")
automv $query $sourced $target
fi
done
echo "Automoved files"
echo "Removing tmp dir: $TMPDIR"
rm -r $TMPDIR
echo "Done"
|