diff --git a/src/password-store.sh b/src/password-store.sh
index 6a4172d..8678684 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -391,7 +391,51 @@ cmd_find() {
 	[[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
 	IFS="," eval 'echo "Search Terms: $*"'
 	local terms="*$(printf '%s*|*' "$@")"
-	tree -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
+
+    # Tree options.
+    tree_opts=(-l -P "${terms%|*}" --prune --ignore-case "${PREFIX}")
+    sed_gpg_remover='s/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
+
+	tree_output=$(tree -f -i -C --matchdirs "${tree_opts[@]}")
+
+    # Give user the option to operate on the search if only a single result is
+    # found.
+    if [[ $(echo "${tree_output}" | tail -1 | cut -d ' ' -f 3) -eq '1' ]]; then
+        echo "Found only one matching entry"
+
+        # Prompt for options.
+        read -n 1 -p "(d)isplay, (c)lip, (u)sername, (e)xtra, (q)uit: " command
+        echo -e '\n'
+        args=''
+        case $command in
+            d|display) ;;
+            c|clip) args=-c ;;
+            u|username) username=1 ;;
+            e|extra) extra=1 ;;
+            q|quit) die "Doing nothing." ;;
+        esac
+
+        # Pull out the path we found.
+	    item_found=$(tree -f -i "${tree_opts[@]}" \
+            | tail -n 3 \
+            | head -1 \
+            | sed -E "${sed_gpg_remover}" \
+            | sed -E "s@${PREFIX}/@@")
+
+        # Do whatever the user told us to.
+        if [[ $username -eq 1 ]]; then
+            cmd_show ${args} "${item_found}" | grep -i -E "user(name)?"
+        elif [[ $extra -eq 1 ]]; then
+            cmd_show ${args} "${item_found}" | tail -n +2
+        else
+            cmd_show ${args} "${item_found}"
+        fi
+    else
+        # Show the normal tree if there are multiple results.
+	    tree -C --noreport --matchdirs "${tree_opts[@]}" \
+            | tail -n +2 \
+            | sed -E "${sed_gpg_remover}"
+    fi
 }
 
 cmd_grep() {
diff --git a/tests/t0500-find.sh b/tests/t0500-find.sh
index 3cf6815..f5899e2 100755
--- a/tests/t0500-find.sh
+++ b/tests/t0500-find.sh
@@ -15,4 +15,11 @@ test_expect_success 'Make sure find resolves correct files' '
 	[[ $("$PASS" find fish | sed "s/^[ \`|-]*//g;s/$(printf \\x1b)\\[[0-9;]*[a-zA-Z]//g" | tr "\\n" -) == "Search Terms: fish-Fish-Fishies-otherstuff-stuff-Fishthings-" ]]
 '
 
+test_expect_success 'Make sure find only gets one file and notice' '
+	"$PASS" init $KEY1 &&
+	"$PASS" generate Anotherthing/okay 38 &&
+	"$PASS" generate Fish 12 &&
+	[[ $("$PASS" find anotherthing | sed "s/^[ \`|-]*//g;s/$(printf \\x1b)\\[[0-9;]*[a-zA-Z]//g" | tr "\\n" -) == "Search Terms: anotherthing-Found only one matching entry---" ]]
+'
+
 test_done
