From: Benawi Adha <43810055+wustho@users.noreply.github.com> Date: Thu, 25 Mar 2021 19:36:25 +0000 (+0700) Subject: plugins: cleanfilename: fixed to not overwrite existing file (#916) X-Git-Tag: v3.7~44 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=b0aa1fe379bb07e590ccbd84c19e018b4218acb9;p=nnn.git plugins: cleanfilename: fixed to not overwrite existing file (#916) * plugins: cleanfilename: fixed to not overwrite existing file * plugins: cleanfilename: fixed to not overwrite existing file --- diff --git a/plugins/cleanfilename b/plugins/cleanfilename index 924d5d04..b7f2ba06 100755 --- a/plugins/cleanfilename +++ b/plugins/cleanfilename @@ -1,12 +1,11 @@ #!/usr/bin/env sh -# Description: Clean filename (either hovered or selections) +# Description: Clean filename or dirname (either hovered or selections) # to be more shell-friendly. # This script replaces any non A-Za-z0-9._- char # with underscore (_). # -# Although the name is 'cleanfilename', but it should work -# on directories too. +# LIMITATION: Won't work with filename that contains newline # # Dependencies: sed # @@ -51,6 +50,10 @@ fi for i in $targets; do if [ "$i" != "$(cleanup "$i")" ]; then - mv "$i" "$(cleanup "$i")"; + tmp='' + if [ -e "$(cleanup "$i")" ]; then + tmp='_' + fi + mv "$i" "$tmp$(cleanup "$i")"; fi done