From 189042d2d906c386f62939e6dec458d9ccd37052 Mon Sep 17 00:00:00 2001 From: José Luis Neder Date: Tue, 3 Dec 2019 10:00:44 -0300 Subject: Plugin renamer (#393) This plugin is an alternative to the native batch rename interface in nnn. qmv from renameutils and vidir from moreutils allow to rename files without fear of replacing existing files. --- plugins/renamer | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 plugins/renamer (limited to 'plugins/renamer') 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 + -- cgit v1.2.3-70-g09d2