Próbuję utworzyć skrypt, który może kompresować pliki z pewnym rozszerzeniem w wielu katalogach do jednej tar-ball. Obecnie mam w pliku skryptu:
find "$rootDir" -name '*doc' -exec tar rvf docs.tar {} \;
Gdzie $rootDir
jest podstawowa ścieżka do wyszukiwania.
Jest to w porządku, chyba że ścieżki są bezwzględne w pliku tar. Wolałbym, aby ścieżki były względne $rootDir
. Jak miałbym to zrobić?
Przykład prądu tar -tf docs.tar
gdzie $rootDir
jest /home/username/test
wyprowadzany:
home/username/test/subdir/test.doc
home/username/test/second.doc
Co chcę, aby wynik był:
./subdir/test.doc
./second.doc
cd $rootDir
icd -
(przynajmniej wbash
).( cd $rootDir ; find ... )
byłoby również możliwe, tj. robienie wszystkiego w podpowłoce.Możesz użyć
%P
formatu z-printf
dyrektywy:wyświetli się w twoim przykładzie:
Następnie możesz użyć tej
find
listy wfor
wyrażeniu, aby uruchomić nasze polecenie exec, jak w:źródło