On 2020-04-11 12:19, Peng Yu wrote: > Recursive also means subdirectories, sub subdirectories, etc.
ah, so you want to fall back for the search to the parent and all parent directories. E.g. if you are in /d1/d2/d3 then you want to search in /d1/d2/d3 falling back to /d1/d2 and /d1 and / right? Then you just need to convert $PWD accordingly and pass it to one find invocation. Maybe something like this? ---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<--- #!/bin/sh f="$1" \ && test -n "$f" \ || { echo "Usage: $0 FILE" >&2; exit 1; } # Expand "/d1/d2/d3" into "/d1/d2/d3 /d1/d2 /d1 /". sedSplitDirs=' :a # loop target. # handle end of loop: append slash, print + quit. /^$/ { c\ / p; q}; # Print each line. p # Then strip off trailing dir ... s|/[^/]*$||; # ... and jump to :a. ta ' find -H $( pwd | sed "$sedSplitDirs" ) -name "$f" -ls -quit --->8--->8--->8--->8--->8--->8--->8--->8--->8--->8--->8--- Have a nice day, Berny