mirror of
https://github.com/mr0xb/dotfiles.git
synced 2026-08-27 19:34:57 -04:00
add fnr
This commit is contained in:
parent
a3e70b734b
commit
bc4d4c403a
1 changed files with 48 additions and 0 deletions
48
.zshrc.d/fnr.zsh
Normal file
48
.zshrc.d/fnr.zsh
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
fnr () {
|
||||||
|
FIND="$1"
|
||||||
|
REPLACE="$2"
|
||||||
|
FILTER="$3"
|
||||||
|
if [ -z "${FIND}" ] || [ -z "${REPLACE}" ]
|
||||||
|
then
|
||||||
|
echo "ERR: must include two parameters for find and replace" >&2
|
||||||
|
echo "Usage: fnr <find_string> <replace_string> [filter]" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v rg 2>&1 > /dev/null
|
||||||
|
then
|
||||||
|
if [ -z "${FILTER}" ]
|
||||||
|
then
|
||||||
|
rg --files --hidden --glob '!.git/' | rg "${FIND}" | sort -r | while read -r file; do
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base=$(basename "$file")
|
||||||
|
new_base=$(echo "$base" | sed "s/${FIND}/${REPLACE}/g")
|
||||||
|
[ "$base" != "$new_base" ] && mv -v "$file" "$dir/$new_base"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
rg --files --hidden --glob '!.git/' | rg "${FIND}" | rg -i "$FILTER" | sort -r | while read -r file; do
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base=$(basename "$file")
|
||||||
|
new_base=$(echo "$base" | sed "s/${FIND}/${REPLACE}/g")
|
||||||
|
[ "$base" != "$new_base" ] && mv -v "$file" "$dir/$new_base"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -z "${FILTER}" ]
|
||||||
|
then
|
||||||
|
find . -name '.git' -prune -o -type f -print | grep "${FIND}" | sort -r | while read -r file; do
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base=$(basename "$file")
|
||||||
|
new_base=$(echo "$base" | sed "s/${FIND}/${REPLACE}/g")
|
||||||
|
[ "$base" != "$new_base" ] && mv -v "$file" "$dir/$new_base"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
find . -name '.git' -prune -o -type f -print | grep "${FIND}" | grep -i "$FILTER" | sort -r | while read -r file; do
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base=$(basename "$file")
|
||||||
|
new_base=$(echo "$base" | sed "s/${FIND}/${REPLACE}/g")
|
||||||
|
[ "$base" != "$new_base" ] && mv -v "$file" "$dir/$new_base"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue