Puedes usar el %P formato en el -printf directiva:
find ${rootDir} -name '*.doc' -printf "%P\n"
mostrará en su ejemplo:
subdir/test.doc
second.doc
A continuación, puede utilizar este find lista en un for expresión, para ejecutar nuestro comando exec, como en:
for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
tar rvf docs.tar ${f}
done
Si ejecuta find desde el directorio raíz deseado y no especifique un punto de partida absoluto en find 's, generará rutas relativas al tar invocaciones de comandos que construye. Así:
cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
Si no desea cambiar el directorio de trabajo actual de forma permanente y está utilizando bash o similar a tu caparazón que podrías hacer
pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd
en su lugar.
Tenga en cuenta que pushd/popd no están presentes en todos los shells, así que consulte la página del manual según corresponda. Están presentes en bash pero no en la implementación base de sh, por lo que al usar explícitamente /bin/bash puede confiar en ellos, no puede si un script solicita /bin/sh en su lugar (ya que esto puede asignarse a un shell más pequeño que no tiene las mejoras de bash)