Retrieving a list of functions and reduce results

Heyas

My core question is how to reduce the required time and diskusage (if/where possible) on the reduce-the-list issue.

		# Get full list of all functions
		local list_raw="$(swarm.eu.function.list )
		# Remove swarm.{sanity,eu] and init.* functions, as they are for internal use only
		local list=$( 
	for l in $list_raw;do 
	( 
		$ECHO "${l}" | $GREP -q 'swarm.sanity' || \
			$ECHO "${l}" | $GREP -q 'swarm.eu' || \
			$ECHO "${l}" | $GREP -q 'init.' 
	)  || $PRINTF "$l "
done ; )

EDIT:
/* The search pattern inside the swarm.eu.function.list function is ^[:space:]funcname () { # comments. */

	swarm.eu.function.list() { # [FILE]
	# Prints a list of properly declared functions
	# see ./docs/{MANUAL,SYNTAX}.md for details
		swarm.protect "$FUNCNAME" "${@}" && exit 1
		local tmp_oldpwd="${PWD:-$($PWD_EXEC)}"
		local tmp_file="${1##*/}"
		local tmp_dir=${1/$tmp_file}
		local target="${tmp_dir:-$SWARM_DIR_LIBS}/$tmp_file"

		if [[ -n "$tmp_file" ]] && [[ -f "$target" ]]
		then	# There is a specific file passed to parse
			cd "${tmp_dir:-$SWARM_DIR_LIBS}"
			$GREP "() { #" "$1"| \
				$GREP -v GREP | \
				$AWK -v FS='() ' '{print $1}' | \
				$SED s,'()',' ',g
			cd "$tmp_oldpwd"
		else	# Just parse all files in SWARM_DIR_LIBS ; default
			raw_output() {
				(
					cd "$SWARM_DIR_LIBS"
					$GREP init.*"() {" * | $GREP -v GREP
					$GREP cfg.*"() {" * | $GREP -v GREP
					# Yes, I could remove these functions here, but I'd like to keep my options
					# for a possible 'internal' section for the help menu
					$GREP swarm.*"() {" * | $GREP -v GREP | $GREP -v '.os.' #| $GREP -v sanity | $GREP -v '\.eu\.'
					cd "$tmp_oldpwd"
				) | while IFS=": " read _ funcname _
				do
					# The IFS takes care of the GREP filenames
					# and this variable-regex takes care of the 'function definition'
					$PRINTF '%s\n' "${funcname/()}"
				done
			}
			# Show data
			raw_output | sort -u
			unset -f raw_output
		fi
	}

EDIT X'th:
Some code fixes, as I did post the code too early as is - while it was in modification.
And while I completed this, I forgot that I wanted to support multiple dirs (SWARM_DIR_LIBS , SWARM_USER_DIR_LIBS) so it could be used for private scripts as well.
And now alot more ideas come up, and I need to go to bed...

Stay healthy and thank you in advance for any suggestions

Please.

No bogus code highlighting marking shell code as PHP.

Please do not abuse the BBCODE.

Thanks.