Se eu entendi o requisito corretamente, você deve usar -path ... -prune
para parar de descer em árvores.
Algo como:
#!/bin/bash -f
# output permissions and ownership with path relative to specified parent.
Usage="$0 <parent path> <excluded child folder> ...."
if [ $# -lt 1 ]
then
(>&2 echo -e $Usage)
exit 1
else
parent=$1
shift
if [ $# -gt 0 ]
then
for folder in $@
do
thisLine=" ( -path $parent/$folder -prune ) -o"
excludes=$excludes$thisLine
done
fi
set -vx
find $parent $excludes -ls | awk '{print $3"|"$5"|"$6"|"$11}'
fi
A ideia é criar uma string semelhante a
find /tmp/A \( -path /tmp/A/skip1 -prune \) -o -ls