Следуя инструкциям здесь: 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.