aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/bulkrename.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/scripts/bulkrename.sh b/scripts/bulkrename.sh
new file mode 100755
index 0000000..9df17d2
--- /dev/null
+++ b/scripts/bulkrename.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# Rename multiple files at once using a text editor
+# File list can be given as args
+# if no args, all files in pwd are used
+
+EDITOR=${EDITOR=:vi}
+
+while [ -z "$TMPFILE" -o -e "$TMPFILE" ]; do
+ TMPFILE="/tmp/bulkrename.$RANDOM"
+done
+touch "$TMPFILE"
+
+FILES=( )
+if [ $# -eq 0 ]; then
+ FILES=( * )
+else
+ FILES=( $@ )
+fi
+
+# List current dir
+for f in "${FILES[@]}"; do
+ echo $f >> "$TMPFILE"
+done
+
+eval "$EDITOR $TMPFILE"
+
+i=0
+while read line; do
+ if [ "$line" != "${FILES[$i]}" -a -e "${FILES[$i]}" -a ! -e "$line" ]; then
+ echo "${FILES[$i]} -> $line"
+ if [ -e "${FILES[$i]}" -a ! -e "$line" ]; then
+ mv "${FILES[$i]}" "$line"
+ else
+ echo Error. does target already exist?
+ fi
+ fi
+
+ i=$(( i + 1 ))
+done < "$TMPFILE"
+
+rm "$TMPFILE"