forked from vitorgalvao/tiny-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrafts
More file actions
executable file
·83 lines (70 loc) · 1.76 KB
/
Copy pathcrafts
File metadata and controls
executable file
·83 lines (70 loc) · 1.76 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash
# temporary files
CRAFTSCOPYFILE="/tmp/crafts-copyfile"
CRAFTSCUTFILE="/tmp/crafts-cutfile"
# usage
usage() {
echo "
Usage:
ccrafts <input> Files and directories to copy (takes multiple arguments).
xcrafts <input> Files and directories to move (takes multiple arguments).
vcrafts <output> Directory to move and copy files and directories to (if no argument is given, it uses the current directory).
ecrafts Edits copy and move lists.
" | sed -E 's/^ {4}//'
}
ccrafts() {
# show usage if no argument is given
if [[ -z "${1}" ]]; then
usage
kill -INT $$
fi
# make sure directory names don't end in '/'
for arg; do
echo "${PWD}/${arg#./}" | sed 's/\/$//' >> "${CRAFTSCOPYFILE}"
done
}
xcrafts() {
# show usage if no argument is given
if [[ -z "${1}" ]]; then
usage
kill -INT $$
fi
for arg; do
echo "${PWD}/${arg#./}" >> "${CRAFTSCUTFILE}"
done
}
vcrafts() {
OLDIFS=$IFS
IFS=$'\n'
# show usage if more than one argument is given
if [[ -n "${2}" ]]; then
usage
kill -INT $$
fi
# set output location
if [[ -n "${1}" ]]; then
crafts_out_dir="${1}"
else
crafts_out_dir="."
fi
# copy files and directories
if [[ -f "${CRAFTSCOPYFILE}" ]]; then
for line in $(cat "${CRAFTSCOPYFILE}"); do
cp -Rv "${line}" "${crafts_out_dir}"
done
fi
# move files and directories
if [[ -f "${CRAFTSCUTFILE}" ]]; then
for line in $(cat "${CRAFTSCUTFILE}"); do
mv -v "${line}" "${crafts_out_dir}"
done
fi
# reset files and options
rm "${CRAFTSCOPYFILE}" "${CRAFTSCUTFILE}" 2>/dev/null
unset crafts_out_dir
IFS=$OLDIFS
}
ecrafts() {
touch "${CRAFTSCOPYFILE}" "${CRAFTSCUTFILE}"
open -t "${CRAFTSCOPYFILE}" "${CRAFTSCUTFILE}"
}