dotfiles/bin/lgrep
Akemi Izuko de244f9ea7
Init again
The dotfiles are back
2023-12-23 20:13:47 -07:00

59 lines
1.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# Greps file and directory names in given directory for a pattern. If no
# directory is provided, the present working directory is used
search_pattern="${1}"
directory="${2:-$PWD}"
print_help () {
local exe_name="$(basename "${0}")"
cat << HELP_MSG
List file names matching matching the pattern in a directory
USAGE:
${exe_name} <pattern> [dir]
EXAMPLES:
${exe_name} bash ~
${exe_name} rc
HELP_MSG
}
is_help () {
[[ "${#}" -eq 0 ]] || [[ "${1}" == '--help' ]] || [[ "${1}" == '-h' ]]
}
#define_colors () {
# local colors
# IFS=: colors=(${EXA_COLORS})
#
# for color in "${colors[@]}"; do
# case "${color}" in
# fi*)
# color_file='\033['"$(cut -c 4- <<<"${color}")"'' ;;
# ln*)
# color_link='\033['"$(cut -c 4- <<<"${color}")"'' ;;
# esac
# done
#}
if is_help "${@}"; then
print_help "${0}"
elif command -v fd &> /dev/null; then
for match in $(fd -aIHd1 "${search_pattern}" "${directory}"); do
printf '%s' "$(basename "${match}")"
if [[ -h "${match}" ]]; then
printf ' -> %s'\
"$(readlink "${match}" | awk '{ sub("'"$HOME"'", "~"); print }')"
fi
printf '\n'
done
else
listlong -a "${directory}" | grep -i --color=always "${search_pattern}"
fi
# ex: set syntax=bash ff=unix: