Назад | Перейти на главную страницу

tar каталог и включать только определенные типы файлов

Следуя инструкциям здесь: http://linuxdevcenter.com/pub/a/linux/lpt/20_08.html

Я хочу настроить каталог, но хочу включить только файлы .php из этого каталога.

Учитывая вышеупомянутые инструкции, я придумал эту команду. Он создает файл с именем IncludeTheseFiles, в котором перечислены все файлы .php, тогда tar должен выполнять свою работу только с использованием файлов, перечисленных в IncludeTheseFiles.

find myProjectDirectory -type f -print | \
egrep '(\.[php]|[Mm]akefile)$' > IncludeTheseFiles
tar cvf myProjectTarName -I IncludeTheseFiles

Однако, когда я запускаю это, ему не нравится опция «Я включаю»?

tar: invalid option -- I

Это помогает, файл сравнения не требуется:

find myProjectDirectory -type f \( -name \*\.php -o -name \*\.js -o -name \*\.css -o -name \*\.inc \) | xargs tar -rf myProjectTarName.tar

Вы должны иметь возможность указать stdin в качестве источника для ваших имен файлов. Пытаться:

find myProjectDirectory -type f -regextype posix-egrep -regex ".*/(.*\.[php]|[Mm]akefile)$ -print | \
tar cvf myProjectTarName --files-from=-

Читая страницу руководства для Gnu tar в моей системе Ubuntu 8.04, она говорит:

-T, --files-from F
    get names to extract or archive from file F

Он не ссылается на -I вариант, кроме упоминания о том, что исторически он использовался для запроса сжатия bzip.