На самом деле я только что посмотрел на tar(1)
в моей системе freebsd и нашел опцию --include (ранее я просматривал какую-то страницу старика онлайн).Опции --include
довольно мощные.Вот несколько примеров
Это файлы
cnicutar@uranus ~/tar_test $ ls -1
a.c
b.c
x
Простой tar, архивировать все
cnicutar@uranus ~/tar_test $ tar -cvf archive1.tar *
a a.c
a b.c
a x
Архивировать только файлы C
cnicutar@uranus ~/tar_test $ tar -cvf archive2.tar --include='*.c' *
a a.c
a b.c
Поэтому, вероятно, в вашем скрипте неправильно то, что в качестве последнего аргумента вы даете tar .
вместо .*
.
РЕДАКТИРОВАТЬ
Я попробовал это и был удивлен.Поведение tar(1)
неожиданно, но (я полагаю) предназначено.Страница man говорит:
Process only files or directories that match the specified pattern.
Поэтому, когда вы указываете шаблон, он отфильтровывает любые каталоги, которые ему не соответствуют.Поэтому, если у ваших каталогов нет такого расширения (оно допустимо, но редко) , оно не сойдет в них (даже если глубоко внутри могут быть "интересные" файлы).
В заключение я считаю, что было бы лучше использовать другой способ рекурсивного перечисления + фильтрации файлов.