Infelizmente, para esta técnica, /usr/bin/test não suporta STRING > STRING , no entanto o shell embutido test faz então temos que invocar o shell para poder usar find -exec e evitar um loop:
find $PWD -type f -exec sh -c 'test "{}" "<" "$PWD/N00.P004"' \; -print
A questão permanece se a geração repetida de um shell é mais eficiente do que executar um loop. No entanto, a principal vantagem de usar essa técnica é que você pode fazer processamento recursivo sem um pipe.
Você pode criar uma função que usa essa técnica e permite usar gt e lt em vez de ter que passar entre < ou > :
my_finder () {
local op=$1
case "$op" in
"gt") op='>';;
"lt") op='<';;
*) echo "Invalid operator"; return 1;;
esac
find $PWD -type f -exec sh -c 'test "{}" "$op" "$PWD/$2"' \; -print
}
Uso:
$ my_finder gt N00.P003
/home/tzury/Desktop/sandbox/N00.P004
/home/tzury/Desktop/sandbox/N01.P000
/home/tzury/Desktop/sandbox/N01.P001
/home/tzury/Desktop/sandbox/N01.P002