Исключить каталог с tar [дубликат]

find /home/karl/dev/beer/ -printf "%P\n" | tar --exclude='./.git' -czf beer.tgz --no-recursion -C /home/karl/dev/beer/ -T -

Команда по-прежнему включает каталог .git.

1
задан 22 April 2017 в 22:30

2 ответа

Вы можете попытаться исключить каталог из поиска следующим образом:

find /home/karl/dev/beer -path .git -prune -printf "%P\n" | tar -czf beer.tar.gz --no-recursion  -T -

Вы также можете проверить это обсуждение.

0
ответ дан 22 April 2017 в 22:30

от man find:

 -printf
 ....
 %P     File's name with the name of the starting-point under which it was found 
        removed.

, Таким образом, Вы исключаете каталог, который не существует в Вашем выводе. При рассмотрении вывода Вашего find команда перед передачей по каналу его (обычно хорошая идея), Вы будете видеть, что это не имеет никакого продвижения ./. Так, необходимо использовать --exclude='.git' не ./.git

, А скорее, чем использование find для этого, Вы могли бы хотеть использовать globstar для создания globbing рекурсивный:

shopt -s globstar
tar --exclude='.git' -czvf beer.tar.gz /home/karl/dev/beer/**
0
ответ дан 23 April 2017 в 08:30
  • 1
    paprefs установлен, это не проблема. Но возможно it' s обязательный, чтобы быть корнем для выполнения его с полными возможностями – dbozec 9 April 2019 в 16:39

Другие вопросы по тегам:

Похожие вопросы: