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