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