aboutsummaryrefslogtreecommitdiff
path: root/files/.config/nnn/plugins/renamer
diff options
context:
space:
mode:
Diffstat (limited to 'files/.config/nnn/plugins/renamer')
-rwxr-xr-xfiles/.config/nnn/plugins/renamer45
1 files changed, 45 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/renamer b/files/.config/nnn/plugins/renamer
new file mode 100755
index 0000000..51c586e
--- /dev/null
+++ b/files/.config/nnn/plugins/renamer
@@ -0,0 +1,45 @@
+#!/usr/bin/env sh
+
+# Description: Batch rename selection or current directory with qmv or vidir
+#
+# Notes:
+# - Try to mimic current batch rename functionality but with correct
+# handling of edge cases by qmv or vidir.
+# - Qmv opens with hidden files if no selection is used. Selected
+# directories are shown.
+# - Vidir don't show directories nor hidden files.
+#
+# Shell: POSIX compliant
+# Author: José Neder
+
+selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
+
+if type qmv >/dev/null 2>&1; then
+ batchrenamesel="qmv -fdo -da"
+ batchrename="qmv -fdo -a"
+elif type vidir >/dev/null 2>&1; then
+ batchrenamesel="vidir"
+ batchrename="vidir"
+else
+ printf "there is not batchrename program installed."
+ exit
+fi
+
+if [ -s "$selection" ]; then
+ printf "rename selection? "
+ read -r resp
+fi
+
+if [ "$resp" = "y" ]; then
+ # -o flag is necessary for interactive editors
+ xargs -o -0 $batchrenamesel < "$selection"
+
+ # Clear selection
+ if [ -p "$NNN_PIPE" ]; then
+ printf "-" > "$NNN_PIPE"
+ fi
+elif [ ! "$(LC_ALL=C ls -a)" = ".
+.." ]; then
+ # On older systems that don't have ls -A
+ $batchrename
+fi