aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/renamer
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/renamer')
-rwxr-xr-xplugins/renamer41
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/renamer b/plugins/renamer
new file mode 100755
index 0000000..5dc8271
--- /dev/null
+++ b/plugins/renamer
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+
+# Description: Batch rename selection or current directory with qmv
+#
+# 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=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection
+
+if command -v qmv >/dev/null 2>&1; then
+ batchrenamesel="qmv -fdo -da"
+ batchrename="qmv -fdo -a"
+elif command -v 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 interative editors
+ xargs -o -0 $batchrenamesel < "$selection"
+elif [ ! "$(LC_ALL=C ls -a)" = ".
+.." ]; then
+ # On older systems that don't have ls -A
+ $batchrename
+fi
+