Я пытаюсь создать скрипт, который может сжимать файлы с определенным расширением в нескольких каталогах в один tar-шар. В настоящее время у меня есть в файле сценария:
find "$rootDir" -name '*doc' -exec tar rvf docs.tar {} \;
Где $rootDir
находится базовый путь для поиска.
Это нормально, за исключением того, что пути в файле tar являются абсолютными. Я бы предпочел, чтобы пути были относительно $rootDir
. Как бы я поступил так?
Пример тока , tar -tf docs.tar
где $rootDir
находится /home/username/test
выход:
home/username/test/subdir/test.doc
home/username/test/second.doc
Что я хочу, чтобы результат был:
./subdir/test.doc
./second.doc
cd $rootDir
иcd -
(по крайней мере, вbash
).( cd $rootDir ; find ... )
также было бы возможно, то есть делать все в подзаголовке.Вы можете использовать
%P
формат в-printf
директиве:будет отображаться в вашем примере:
Затем вы можете использовать этот
find
список вfor
выражении для запуска нашей команды exec, например:источник