Anda dapat menggunakan %P format dalam -printf direktif:
find ${rootDir} -name '*.doc' -printf "%P\n"
akan ditampilkan dalam contoh Anda:
subdir/test.doc
second.doc
Anda kemudian dapat menggunakan find ini daftar dalam for ekspresi, untuk menjalankan perintah exec kami, seperti pada:
for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
tar rvf docs.tar ${f}
done
Jika Anda menjalankan find dari direktori root yang diinginkan dan jangan tentukan titik awal mutlak di find , itu akan menampilkan jalur relatif ke tar pemanggilan perintah yang dibuatnya. Seperti itu:
cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
Jika Anda tidak ingin mengubah direktori kerja saat ini secara permanen dan menggunakan bash atau serupa dengan shell Anda yang bisa Anda lakukan
pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd
sebagai gantinya.
Perhatikan bahwa pushd/popd tidak ada di semua shell, jadi periksa halaman manual yang sesuai. Mereka hadir dalam bash tetapi tidak dalam implementasi sh dasar sementara secara eksplisit menggunakan /bin/bash Anda dapat mengandalkan mereka, Anda tidak dapat melakukannya jika skrip meminta /bin/sh sebagai gantinya (karena ini mungkin memetakan ke shell yang lebih kecil yang tidak memiliki peningkatan bash)