aboutsummaryrefslogtreecommitdiffstats
path: root/bulkrename
diff options
context:
space:
mode:
authorCédric Picard <mystiro@gmail.com>2014-05-12 20:40:56 +0200
committerCédric Picard <mystiro@gmail.com>2014-05-12 20:40:56 +0200
commit7b9fe2bfcc50237795cdfb5653908e01bdb19cd6 (patch)
tree095cc934e82eed934b1c3679ee09c4862581f2d9 /bulkrename
downloadbulkrename-7b9fe2bfcc50237795cdfb5653908e01bdb19cd6.tar.gz
bulkrename-7b9fe2bfcc50237795cdfb5653908e01bdb19cd6.tar.bz2
bulkrename-7b9fe2bfcc50237795cdfb5653908e01bdb19cd6.zip
Initial commit - All works
Diffstat (limited to 'bulkrename')
-rwxr-xr-xbulkrename42
1 files changed, 42 insertions, 0 deletions
diff --git a/bulkrename b/bulkrename
new file mode 100755
index 0000000..70f2407
--- /dev/null
+++ b/bulkrename
@@ -0,0 +1,42 @@
+#!/bin/bash
+# Copyright Cédric Picard 2014 -- License DWTFYW -- inspired by Ranger's
+
+set -e
+
+if [ $# -ne 0 ] ; then
+ for i in "$@" ; do printf "%s\n" "$i" ; done | "$0"
+ exit
+fi
+
+[ -x "$(which "$EDITOR" 2>/dev/null)" ] || EDITOR=vi
+
+file=/tmp/blkrn-$$
+cat > ${file}.1
+exec </dev/tty >/dev/tty
+
+cp ${file}.1 ${file}.2
+"$EDITOR" ${file}.2
+
+line_count=$(wc -l < ${file}.1)
+if [ $line_count -ne $(wc -l < ${file}.2) ] ; then
+ rm ${file}.1 ${file}.2
+ echo "Wrong number of lines" >&2
+ exit 1
+fi
+
+paste -d "\n" ${file}.1 ${file}.2 | while [ $line_count -ne 0 ] ; do
+ line_count=$(($line_count - 1))
+ read -r input ; input="$(printf "%s" "$input" | sed "s/'/'\"'\"'/")"
+ read -r output ; output="$(printf "%s" "$output" | sed "s/'/'\"'\"'/")"
+
+ if [ "$input" != "$output" ] ; then
+ echo "mv -v -- '$input' '$output'"
+ fi
+done > ${file}.sh
+
+if [ "$(stat --printf="%s" ${file}.sh)" -ne 0 ] ; then
+ "$EDITOR" ${file}.sh
+ sh ${file}.sh
+fi
+
+rm ${file}.1 ${file}.2 ${file}.sh